近期写项目做后端数据生成json格式返回给前端,遇到了中文乱码变成\nxxx格式,网上很多人都是修改jsoncpp源码然后重新编译,对于咱们这种小白那是十分不友好啊~几天后终于找到一种解决中文乱码的好办法,而且不需要修改源码,特此分享给大家以供参考:
std::string toString(const Json::Value &val){
static Json::Value def = []() {
Json::Value def;
Json::StreamWriterBuilder::setDefaults(&def);
def["emitUTF8"] = true;
return def;
}();
std::ostringstream stream;
Json::StreamWriterBuilder stream_builder;
stream_builder.settings_ = def;//Config emitUTF8
std::unique_ptr<Json::StreamWriter> writer(stream_builder.newStreamWriter());
writer->write(val, &stream);
return stream.str();
}
当我们需要对一个构造好的Json::Value序列化为std::string时只需调用这个函数,将Json::Value对象作为参数传入即可获得std::string对象!