C++ Poco JSON中文解析出现乱码问题
1. 问题
用C++ 库 POCO 解析JSON时,看到这篇帖子Poco JSON解析, 发现两层的中文解析乱码,如:
Poco::JSON::Object o1,o2;o1.set("wo","地址");o2.set("wo2","地址");o1.set("wo3", o2);std::stringstream ostr;o1.stringify(ostr);std::cout << ostr.str() << std::endl;
编译结果:
{"wo" : "地址","wo3" : {"wo2" : "\u5730\u5740"}
}Process finished with exit code 0
o2无法解析中文。
2. 解决方案:
查看了Object的cpp文件,发现嵌套json里面应该转换成struct对象才可以正常显示!
如:
Poco::JSON::Object o1;Poco::JSON::Object::Ptr o2 = new Poco::JSON::Object;o1.set("wo","地址");o2->set("wo2","地址");o1.set("wo3", Poco::JSON::Object::makeStruct(o2));std::stringstream ostr;o1.stringify(ostr);std::cout << ostr.str() << std::endl;输出:
{"wo":"地址","wo3":{ "wo2" : "地址" }}