JSON Spirit 中文支持(转)
2013-07-15 08:33
281 查看
JSON 是一种比XML轻量的数据交换格式,应用越来越广泛,尤其是网页数据方面。其作为Javascript的字符描述语言,可以被自动解析;PHP
5.2以上也内置了JSON解析函数。在C/C++语言开发中,目前开源的JSON处理库也很多,包括JsonCPP, QJson, JSON Spirit, jaula,json-c等,但是其中支持Windows平台且支持中文的好像只有json-c。
公司产品开发中一直用的库是JSON Spirit,最近碰到了中文支持的问题:每次读写带有中文的JSON字符串到文件,都会返回异常。(貌似不与IO打交道时还可以用。)
跟了一下JSON Spirit的源码,发现它是基于STL/boost标准库实现的,数据结构也都是在这些库的基础上扩展的。当然,IO stream也是STL的标准流。那么,要想让JSON Spirit支持中文,也就是要让标准流支持中文;要想让IO流支持中文,就需要在IO流中选入支持中文的locale对象。至于locale的相关知识,请参考这篇文章:locale详解。
JSON Spirit库提供了读写文件的函数,使用起来非常方便。通过以上分析,读JSON字符串文件的代码可以这样写:
wstring wstrFile = L"D:\\json.txt";
wifstream is( wstrFile.c_str());
is.imbue(locale("chs"));
json_spirit::wValue value;
if( json_spirit::read( is, value) == false)
{
...
}
is.close();
... // handle
json string
写JSON字符串文件的代码为:
wstring wstrFile = L"D:\\json.txt";
wofstream os( wstrFile.c_str());
os.imbue(locale("chs"));
json_spirit::write_formatted( objData, os);
os.close();
这样,JSON Spirit库就可以支持读写带有中文字符串的文件了。
5.2以上也内置了JSON解析函数。在C/C++语言开发中,目前开源的JSON处理库也很多,包括JsonCPP, QJson, JSON Spirit, jaula,json-c等,但是其中支持Windows平台且支持中文的好像只有json-c。
公司产品开发中一直用的库是JSON Spirit,最近碰到了中文支持的问题:每次读写带有中文的JSON字符串到文件,都会返回异常。(貌似不与IO打交道时还可以用。)
跟了一下JSON Spirit的源码,发现它是基于STL/boost标准库实现的,数据结构也都是在这些库的基础上扩展的。当然,IO stream也是STL的标准流。那么,要想让JSON Spirit支持中文,也就是要让标准流支持中文;要想让IO流支持中文,就需要在IO流中选入支持中文的locale对象。至于locale的相关知识,请参考这篇文章:locale详解。
JSON Spirit库提供了读写文件的函数,使用起来非常方便。通过以上分析,读JSON字符串文件的代码可以这样写:
wstring wstrFile = L"D:\\json.txt";
wifstream is( wstrFile.c_str());
is.imbue(locale("chs"));
json_spirit::wValue value;
if( json_spirit::read( is, value) == false)
{
...
}
is.close();
... // handle
json string
写JSON字符串文件的代码为:
wstring wstrFile = L"D:\\json.txt";
wofstream os( wstrFile.c_str());
os.imbue(locale("chs"));
json_spirit::write_formatted( objData, os);
os.close();
这样,JSON Spirit库就可以支持读写带有中文字符串的文件了。
相关文章推荐
- JSON Spirit 中文支持
- PHP json_encode() 不支持中文字符的解决方案 ch_json_encode()
- 两种方法在Django框架中支持后台返回包含中文的JSON/数组格式
- php5.4以下版本json不支持不转义内容中的中文解决办法
- json不支持中文写入的问题解决
- php生成返回json对象数组(json支持中文)
- json不支持中文写入的问题解决
- JSON asp(vbs)中文支持问题
- 解决HttpClient交付json格式请求的中文支持
- 解决json_encode不支持中文问题
- json_encode不支持中文的一个解决方法
- 解决PHP中json_encode()不支持中文的替代函数
- [PHP]json_encode增加options参数后支持中文
- springmvc通过@ResponseBody 自动解析为json对象支持中文
- json_encode不支持中文解决方法
- jsoncpp安装及对中文支持很好
- Flask 让jsonify和json.dumps返回的json数据支持中文显示
- php5.4以下版本json不支持不转义内容中文的解决方法
- JSON asp(vbs)中文支持问题
- jsoncpp修改支持中文