加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用 jsonCpp 序列化、反序列化 json 字符串

发布时间:2020-12-16 19:21:27 所属栏目:百科 来源:网络整理
导读:原文链接:http://www.cnblogs.com/ggjucheng/archive/2012/01/03/2311107.html 前言 JSON是一个轻量级的数据定义格式,比起XML易学易用, 而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择 JSON 的全称为: JavaScript Object Notation ,顾名思

原文链接: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 对象如下:

{
    "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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读