jsoncpp代码实例

最近开始使用 jsoncpp,以前一直在使用cJSON,但是使用cJSON的时候经常会忘记free掉json的内存,结果造成了内存泄露,程序跑着跑着就崩溃了。所以最近把json转移到了jsoncpp上。

jsoncpp的代码源文件 百度网盘 : http://pan.baidu.com/s/1ntqQhIT

下面是jsoncpp源代码中的main.cpp实例,大家感受一下。

jsoncpp代码包解压后的目录结构如下:

jsoncpp/
├─ include
│   └─ json
│       ├── autolink.h
│       ├── config.h
│       ├── features.h
│       ├── forwards.h
│       ├── json.h
│       ├── reader.h
│       ├── value.h
│       └── writer.h
├─ makefile
└─ src
    ├─ json
    │   ├── json_batchallocator.h
    │   ├── json_internalarray.inl
    │   ├── json_internalmap.inl
    │   ├── json_reader.cpp
    │   ├── json_value.cpp
    │   ├── json_valueiterator.inl
    │   ├── json_writer.cpp
    │   └── sconscript
    └── main.cpp

其中jsoncpp/src/main.cpp就是我们的测试程序代码。

在jsoncpp目录下直接运行命令make即可进行编译(linux环境下)。

 1 #include <string>
 2 #include <json/json.h>
 3 
 4 void readJson();
 5 void writeJson();
 6 
 7 int main(int argc, char** argv) {
 8     readJson();
 9     writeJson();
10     return 0;
11 }
12 
13 void readJson() {
14     using namespace std;
15     std::string strValue = "{\"name\":\"json\",\"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}";
16 
17     Json::Reader reader;
18     Json::Value value;
19 
20     if (reader.parse(strValue, value))
21     {
22         std::string out = value["name"].asString();
23         std::cout << out << std::endl;
24         const Json::Value arrayObj = value["array"];
25         for (unsigned int i = 0; i < arrayObj.size(); i++)
26         {
27             if (!arrayObj[i].isMember("cpp")) 
28                 continue;
29             out = arrayObj[i]["cpp"].asString();
30             std::cout << out;
31             if (i != (arrayObj.size() - 1))
32                 std::cout << std::endl;
33         }
34     }
35 }
36 
37 void writeJson() {
38     using namespace std;
39 
40     Json::Value root;
41     Json::Value arrayObj;
42     Json::Value item;
43 
44     item["cpp"] = "jsoncpp";
45     item["java"] = "jsoninjava";
46     item["php"] = "support";
47     arrayObj.append(item);
48 
49     root["name"] = "json";
50     root["array"] = arrayObj;
51 
52     root.toStyledString();
53     std::string out = root.toStyledString();
54     std::cout << out << std::endl;
55 }

 

下面是运行的结果

 1 json
 2 jsoncpp
 3 {
 4    "array" : [
 5       {
 6          "cpp" : "jsoncpp",
 7          "java" : "jsoninjava",
 8          "php" : "support"
 9       }
10    ],
11    "name" : "json"
12 }

 

作者:风波

mail : fengbohello@qq.com

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值