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" : "地址" }}