C++ Poco JSON中文解析出现乱码问题

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" : "地址" }}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值