??
本文主要内容转自:
http://www.cnblogs.com/ytjjyy/archive/2012/04/17/2453348.html
作者做了一些修改和增加。
C++要使用JSON来解析数据,一般采用jsoncpp.
网站:http://sourceforge.net/projects/jsoncpp/
下载了之后,解压,然后打开jsoncpp-src-0.5.0jsoncpp-src-0.5.0makefilesvs71
下的工程文件,进行编译链接就可以得到一个静态链接库json.lib
要用jsoncpp只需要将这个lib文件拷贝到你的工程目录下,并将jsoncpp-src-0.5.0jsoncpp-src-0.5.0includejson
复制到工程目录下,然后将这些头文件加到工程中去就可以了。
代码如下:
pragma comment (lib,"json_vc71_libmtd.lib") #include <stdio.h> #include<iostream> #include "json/json.h" #include <string>
int main() { /********************************************************************************************************* * 反序列化Json对象 * * 比如一个Json对象的字符串序列如下,其中”array”:[...]表示Json对象中的数组: * { “key1″:”value1″,”array” : [{"key2":"value2"},{ "key2":"value3" },{ "key2":"value4" }] },那怎么分别取到key1和key2的值呢,代码如下所示: * **********************************************************************************************************/
std::string strValue = "{ "key1":"value1","array":[{"key2":"value2"},{"key2":"value3"},{"key2":"value4"}]}"; Json::Reader reader; Json::Value value;
if (reader.parse(strValue,value)) { std::string out = value["key1"].asString(); std::cout << out << std::endl; const Json::Value arrayObj = value["array"]; for (int i = 0; i<arrayObj.size(); i++) { out = arrayObj[i]["key2"].asString(); std::cout << out; if (i != arrayObj.size()) std::cout << std::endl; } }
/*****************************************************************************/ // 序列化json // 先构建一个Json对象,此Json对象中含有数组,然后把Json对象序列化成字符串,代码如下: /*****************************************************************************/
Json::Value root; Json::Value arrayObj; Json::Value item; for (int i = 0; i<10; i++) { item["key"] = i; arrayObj.append(item); }
root["key1"] = "value1"; root["key2"] = "value2"; root["array"] = arrayObj; root.toStyledString(); std::string out = root.toStyledString(); std::cout << out << std::endl;
/*****************************************************************************/ // 删除Json对象 /*****************************************************************************/
std::string strContent = "{"key":"1","name":"test"}";
Json::Reader reader1;
Json::Value value1;
if (reader.parse(strContent,value)) { Json::Value root = value;
root.removeMember("key");
printf("%s n",root.toStyledString().c_str()); }
system("pause"); return 0; }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|