今天,由于项目要求,需要用到JONScpp去解析数据。开始用得很开心,觉得JSONcpp是个好东西,所以很兴奋。但是后面,出现 Json::Reader :parser()调用失败。很好奇,明明json格式很正确,为什么会解析失败?所以很生气,但是没办法只能单步调试了。进去后发现JSONcpp代码有一段代码在解析“忎,忈,朲,芢,朲,銋,姙,鈓,鵀,絍”这样的特殊中文时认为字符串是与"\"开头,然后就直接跳到default放回,代码如下:
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( "Em