【Jsoncpp】manipulating JSON data in C++

源代码

在这里插入图片描述

#include <iostream>  // 引入输入输出流库,用于标准输入输出操作
#include <fstream>   // 引入文件流库,用于文件读写操作
#include <json/json.h>  // 引入JSON库,用于解析和操作JSON数据

using namespace std;  // 使用标准命名空间,避免每次调用标准库函数时都要加std::

int main()
{
    Json::Value root;  // 创建一个Json::Value对象,用于存储解析后的JSON数据
    ifstream ifs;  // 创建一个输入文件流对象,用于读取文件
    ifs.open("profile.json");  // 打开名为"profile.json"的文件

    Json::CharReaderBuilder builder;  // 创建一个JSON解析器的构建器对象
    builder["collectComments"] = true;  // 设置解析器在解析时收集注释

    JSONCPP_STRING errs;  // 创建一个字符串对象,用于存储解析过程中可能产生的错误信息

    // 使用解析器从文件流中解析JSON数据,并将结果存储在root对象中
    // 如果解析失败,输出错误信息并返回EXIT_FAILURE
    if (!parseFromStream(builder, ifs, &root, &errs))
    {
        std::cout << errs << std::endl;  // 输出错误信息
        return EXIT_FAILURE;  // 返回程序失败状态
    }

    Json::Value::iterator itr = root.begin();  // 创建一个迭代器,指向JSON对象的起始位置
    int i = 0;  // 初始化一个计数器,用于遍历JSON对象的成员
    string name;  // 创建一个字符串对象,用于存储JSON对象的成员名称

    // 遍历JSON对象的每个成员
    for (itr = root.begin(); itr != root.end(); itr++)
    {
        name = root.getMemberNames()[i];  // 获取当前成员的名称

        // 如果当前成员的值是一个数组(大小大于1),则遍历数组中的每个元素
        if (root[name].size() > 1) {
            for (auto x : root[name]) {
                cout << name << ": " << x << endl;  // 输出成员名称和数组中的每个元素
            }
        }
        else {
            cout << name + " ";  // 输出成员名称
            cout << root[name] << endl;  // 输出成员的值
        }
        i++;  // 计数器加1,准备处理下一个成员
    }
}

json内容为:

{
   "isbn": "123-456-789",
    "author":
        {
   
            "lastname": "Doe",
            "firstname" : "Jane"
        },
    "editor":
        {
   
            "lastname": "Smith",
            "firstname": "Jane"
        },
    "title": "The Ultimate Database Study Guide",
    "category": ["Non-Fiction"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值