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 }
复制代码

 


本文转自郝峰波博客园博客,原文链接:http://www.cnblogs.com/fengbohello/p/4059435.html,如需转载请自行联系原作者

相关文章
|
Python
python 打印某个文件夹下的所有文件 三行代码
python 打印某个文件夹下的所有文件 三行代码
54 0
|
6月前
|
JSON 数据格式 Python
python把json转换为execl
确保替换 `'your_data.json'` 为你实际的JSON文件路径,并将 `'output.xlsx'` 替换为你希望保存的Excel文件路径。以上步骤将帮助你将JSON数据转换为Excel文件,以便进一步处理或分享。
161 0
|
6月前
|
Python
Python-函数的传参方式docx
Python-函数的传参方式docx
51 5
|
Python
Python 编码格式(申明)
Python 编码格式(申明)
60 0
|
XML JSON C++
C++的Json解析库:jsoncpp和boost .
JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org/,本文不再对json做介绍,将重点介绍c++的json解析库的使用方法。
2851 0
|
JSON API 数据格式
Python 库引用提示:name ‘json‘ is not defined. 问题解决办法
Python 库引用提示:name ‘json‘ is not defined. 问题解决办法
1106 0
Python 库引用提示:name ‘json‘ is not defined. 问题解决办法
|
前端开发 Python
8. Python3源码—Code对象与pyc文件
# 8.1. Python程序的执行过程 Python解释器在执行任何一个Python程序文件时,首先进行的动作都是先对文件中的Python源代码进行编译,编译的主要结果是产生一组Python的byte code(字节码),然后将编译的结果交给Python的虚拟机(Virtual Machine),由虚拟机按照顺序一条一条地执行字节码,从而完成对Python程序的执行动作。 对于Pytho
7436 0
|
JSON C++ 数据格式
VS2008中使用JSONCPP方法小结
Introduction JSON (JavaScript Object Notation) is a lightweight data-interchange format. It can represent integer, real number, string, an ordered seq...
937 0
|
Java Spring
通过代码实例说明如何化腐朽为优雅
一、背景 ​  最近我负责的活动促销系统中要在审批的时候增加计算参加活动的商品的毛利率的需求。但是我负责打辅助,主要是同事负责具体开发,我了解了他的实现方式思路以后,果断拒绝了,并给出了我的解决方案以及优点,他发现我的方案确实扩展性和可维护性更好以后就采用了,本文就来通过这个实例来说明如何让本腐朽的代码变得优雅起来。
1070 0