JSONCpp 解析特殊中文特殊字符串是失败!
2013-11-26 18:16
1631 查看
今天,由于项目要求,需要用到JONScpp去解析数据。开始用得很开心,觉得JSONcpp是个好东西,所以很兴奋。但是后面,出现 Json::Reader :parser()调用失败。很好奇,明明json格式很正确,为什么会解析失败?所以很生气,但是没办法只能单步调试了。进去后发现JSONcpp代码有一段代码在解析“忎,忈,朲,芢,朲,銋,姙,鈓,鵀,絍”这样的特殊中文时认为字符串是与"\"开头,然后就直接跳到default放回,代码如下:
所以解决这个问题只要把return去掉就好了。
bool Reader::decodeString( Token &token, std::string &decoded ) { decoded.reserve( token.end_ - token.start_ - 2 ); Location current = token.start_ + 1; // skip '"' Location end = token.end_ - 1; // do not include '"' while ( current != end ) { Char c = *current++; if ( c == '"' ) break; else if ( c == '\\' ) { if ( current == end ) return addError( "Empty escape sequence in string", token, current ); Char escape = *current++; switch ( escape ) { case '"': decoded += '"'; break; case '/': decoded += '/'; break; case '\\': decoded += '\\'; break; case 'b': decoded += '\b'; break; case 'f': decoded += '\f'; break; case 'n': decoded += '\n'; break; case 'r': decoded += '\r'; break; case 't': decoded += '\t'; break; case 'u': { unsigned int unicode; if ( !decodeUnicodeCodePoint( token, current, end, unicode ) ) return false; decoded += codePointToUTF8(unicode); } break; default: return addError( "Bad escape sequence in string", token, current ); } } else { decoded += c; } } return true; }
所以解决这个问题只要把return去掉就好了。
相关文章推荐
- 基于开源库jsoncpp的json字符串解析
- json_decode解析中文失败
- jsoncpp封装和解析字符串、数字、布尔值和数组
- iOS Json解析中特殊字符串('\' '\r' '\n' ' ' 等)处理
- JSONKit 解析逗号冗余的json字符串失败
- JSON字符串Gson,JSONObject解析中文乱码,接口
- jsoncpp封装和解析字符串、数字、布尔值和数组
- 图片的base64码,添加到json字符串中,用JSON.parse()解析失败
- json_encode不对中文进行转码、json_decode解析json字符串返回NULL的处理方法
- C++/MFC使用JSONCPP解析JSON字符串
- 搞定2个问题:C# 动态调用java webservice,Winform解析Json字符串中特殊值
- C++ jsoncpp解析json字符串
- jsoncpp封装和解析字符串、数字、布尔值和数组
- 基于开源库jsoncpp的json字符串解析
- 基于开源库jsoncpp的json字符串解析
- NSDate转NSString遇到异常字符时字符串被截断JSON解析失败
- NSDate转NSString遇到异常字符时字符串被截断JSON解析失败(二)
- 特殊json字符串解析
- jsoncpp封装和解析字符串、数字、布尔值和数组
- C# 动态调用java webservice,Winform解析Json字符串中特殊值