C++ Json工具--Jsoncpp用法简介

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: Json简介JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式,可读性强,易扩展,很适合做通信协议,下面主要介绍一款C++的Json库:Jsoncpp.

用法简介
数据类型
Jsoncpp中,封装类Json::Value,既可以用于表示Json对象,也可以用于表示Json数组(也叫列表或者集合)。使用起来比较方便;当作数组使用时,在实例化时需要指定其类型如下:

Json::Value array(Json::arrayValue);

这样就创建了一个空的json数组,数组的成员可以是单个对象,也可以是复杂对象,如下:
简单成员:

[ "1", "2", "3" ] //字符串列表
[ 1, 2, 3 ] //整数列表
1
2
也可以是:


    "test":[
        {
            "no":1,
            "val": 21
        },
        {
            "no":2,
            "val": 21
        },
        {
            "no":3,
            "val": 32,
            "msg": "for test"   //列表中每个对象的内容可以不一样
        }
    ] 

解析如下:

对象很简单,就是key-value的形式;value的数据类型可以是整型、浮点、字符串。

{
    “no”:1,
    "name": "Tom"
}

C++代码示例

#include <iostream>
#include "json/json.h"
#include <string>


using namespace std;

int main()
{
    //1.创建json字符串
    cout << "1.creat json string----------------------------------------"<<endl;
    Json::Value jsonObj;

    jsonObj["id"]   = 1;     //int
    jsonObj["name"] = "Fens";//string
    jsonObj["age"]  = 18;    //int

    Json::Value jsonArray(Json::arrayValue); //creat an array
    jsonArray[0] = "13633838481"; //给数组添加数据,注:这两个手机号是上学时用的,现在已经不是我的了^_^
    jsonArray[1] = "15617051150";
    jsonObj["phone"]=jsonArray;     //将数组添加到对象中

    Json::StyledWriter styleWriter; //有个格式
    Json::FastWriter fastWriter;    //压缩,无格式
    cout << "styleWriter json string: "<<styleWriter.write(jsonObj)<<endl;
    cout << "-----------------------------------------------------------"<<endl;
    cout << "fastWriter json string: "<<fastWriter.write(jsonObj)<<endl;
//2.解析json字符串
    cout << "2.decode json string----------------------------------------"<<endl;
    const string jsonString = "{\"id\":1,\"name\":\"fens\",\"phone\":[\"15617051150\",\"13833838481\"],\"school\":[{\"type\":\"primary\",\"name\":\"夏邑县第一实验小学\",\"address\":\"河南省夏邑县文化路\"},{\"type\":\"middle\",\"name\":\"夏邑县第三高级中学\",\"address\":\"河南省夏邑县建设路孔祖大道\"},{\"type\":\"college\",\"name\":\"郑州大学\",\"address\":\"河南省郑州市高新技术开发区科学大道\"}]}";

    Json::Reader reader;
    Json::Value  rootObj;
    reader.parse(jsonString, rootObj);

    cout <<"read json string: "<<rootObj.toStyledString()<<endl;



    return 0;
}

上面代码是介绍的Json字符串的解析与生产,如果需要读写文件,只需要把读取到的字符串交给Json::Reader,或者把Json::styleWriter或者Json::fastWriter序列化后的字符串写入文件即可。

代码执行输出结果
1.creat json string----------------------------------------

styleWriter json string: {
   "age" : 18,
   "id" : 1,
   "name" : "Fens",
   "phone" : [ "13633838481", "15617051150" ]
}


fastWriter json string: {"age":18,"id":1,"name":"Fens","phone":["13633838481","15617051150"]}

2.decode json string----------------------------------------

read json string: {
   "id" : 1,
   "name" : "fens",
   "phone" : [ "15617051150", "13833838481" ],
   "school" : [
      {
         "address" : "河南省夏邑县文化路",
         "name" : "夏邑县第一实验小学",
         "type" : "primary"
      },
      {
         "address" : "河南省夏邑县建设路孔祖大道",
         "name" : "夏邑县第三高级中学",
         "type" : "middle"
      },
      {
         "address" : "河南省郑州市高新技术开发区",
         "name" : "郑州的大学",
         "type" : "college"
      }
   ]
}

JSON在线解析及格式化验证 - JSON.cn
Json在线解析网站: https://www.json.cn/#

Jsoncpp源码及示例代码: https://gitee.com/fensnote/demo_code.git

目录
相关文章
|
1月前
|
JSON 数据格式
用来返回Json数据格式的工具--通用类
用来返回Json数据格式的工具--通用类
19 1
|
1月前
|
算法 安全 Linux
【C++STL简介】——我与C++的不解之缘(八)
【C++STL简介】——我与C++的不解之缘(八)
|
1月前
|
JSON JavaScript 前端开发
JSON.parse()和JSON.stringify()用法
JSON.parse()和JSON.stringify()用法
45 1
|
2月前
|
JSON JavaScript 数据格式
vue写入json数据到文本中+vue引入cdn的用法
vue写入json数据到文本中+vue引入cdn的用法
56 10
|
2月前
|
JSON Java fastjson
java小工具util系列3:JSON和实体类转换工具
java小工具util系列3:JSON和实体类转换工具
26 2
|
2月前
|
JSON 前端开发 JavaScript
JSON用法
JSON用法
33 4
|
2月前
|
C++
C++(十八)Smart Pointer 智能指针简介
智能指针是C++中用于管理动态分配内存的一种机制,通过自动释放不再使用的内存来防止内存泄漏。`auto_ptr`是早期的一种实现,但已被`shared_ptr`和`weak_ptr`取代。这些智能指针基于RAII(Resource Acquisition Is Initialization)原则,即资源获取即初始化。RAII确保对象在其生命周期结束时自动释放资源。通过重载`*`和`-&gt;`运算符,可以方便地访问和操作智能指针所指向的对象。
|
3月前
|
编译器 C++ 容器
【C++】String常见函数用法
【C++】String常见函数用法
|
3月前
|
存储 算法 编译器
|
3月前
|
JSON 数据格式 C++
JSON(C++)
JSON(C++)
36 1