用 jsonCpp 序列化、反序列化 json 字符串
2013-08-31 20:35
204 查看
原文链接:http://www.cnblogs.com/ggjucheng/archive/2012/01/03/2311107.html
前言
JSON是一个轻量级的数据定义格式,比起XML易学易用,
而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择
JSON 的全称为:JavaScript Object Notation ,顾名思义,
JSON 是用于标记 javascript 对象的,详情参考 http://www.json.org/。
本文选择第三方库 JsonCpp 来解析 json, JsonCpp 是比较出名的 c++ 解析库,在 json 官网也是首推的。
JsonCpp 简介
JsonCpp 主要包含三个类:Value Reader Writer。
jsoncpp 中所有对象、类名都在 namespace json 中,包含 json.h 即可。
注意:
Json::Value 只能处理 ANSI 类型的字符串,如果 C++ 程序使用 Unicode 编码的,最好加一个 Adapt 类来适配。
反序列化 Json 对象
假设有一个 json 对象如下:
前言
JSON是一个轻量级的数据定义格式,比起XML易学易用,
而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择
JSON 的全称为:JavaScript Object Notation ,顾名思义,
JSON 是用于标记 javascript 对象的,详情参考 http://www.json.org/。
本文选择第三方库 JsonCpp 来解析 json, JsonCpp 是比较出名的 c++ 解析库,在 json 官网也是首推的。
JsonCpp 简介
JsonCpp 主要包含三个类:Value Reader Writer。
jsoncpp 中所有对象、类名都在 namespace json 中,包含 json.h 即可。
注意:
Json::Value 只能处理 ANSI 类型的字符串,如果 C++ 程序使用 Unicode 编码的,最好加一个 Adapt 类来适配。
反序列化 Json 对象
假设有一个 json 对象如下:
{ "name": "json″, "array": [ { "cpp": "jsoncpp" }, { "java": "jsoninjava" }, { "php": "support" } ] }我们要实现这个 json 的反序列号代码如下:
using namespace std; using namespace Json; void readJson() { string strValue = "{\"name\":\"json\",\"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}"; Reader reader; Value value; if (reader.parse(strValue, value)) { string out = value["name"].asString(); cout << out << endl; const Json::Value arrayObj = value["array"]; for (unsigned int i = 0; i < arrayObj.size(); i++) { if (!arrayObj[i].isMember("cpp")) { continue; } out = arrayObj[i]["cpp"].asString(); cout << out; if (i != (arrayObj.size() - 1)) { cout << endl; } } } }序列化 Json 对象
using namespace std; void writeJson() { Json::Value root; Json::Value arrayObj; Json::Value item; item["cpp"] = "jsoncpp"; item["java"] = "jsoninjava"; item["php"] = "support"; arrayObj.append(item); root["name"] = "json"; root["array"] = arrayObj; root.toStyledString(); string out = root.toStyledString(); cout << out << endl; }
相关文章推荐
- Fuck JSon (1) jsoncpp 序列化/反序列化字符串和整数
- [置顶] Fastjson 序列化,反序列化Map对象排序问题(字符串转map,map转字符串)
- 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性
- 序列化、反序列化与jsoncpp学习
- fastJson序列化和反序列化 中空字符串的处理
- 解决如下json格式的字符串不能使用DataContractJsonSerializer序列化和反序列化
- .net MVC 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值
- 对象序列化成Json字符串 及 反序列化成对象
- C#中json字符串的序列化和反序列化
- 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性
- 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性
- 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性
- 序列化、反序列化与jsoncpp学习
- mvc “使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值” 解决经历
- C#序列化和反序列化Json字符串帮助类
- 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性
- JSON 序列化和反序列化:将时间由"//Date(10000000000-0700)//" 格式转换成 "yyyy-MM-dd HH:mm:ss" 格式的字符串
- 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象
- C#中json字符串的序列化和反序列化
- 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值