吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1477|回复: 9
收起左侧

[C&C++ 原创] nlohmann库(C++)对json的读写增删改查

[复制链接]
zuoyizhongguo 发表于 2023-3-14 11:06
官网:Releases · nlohmann/json (github.com)
444.png
直接上代码:
[C++] 纯文本查看 复制代码
#include <iostream>
#include "nlohmann/json.hpp"
#include <fstream>

using json = nlohmann::json;

int main()
{
    //写
    json out = {
        {"pi",3.141},
        {"happy",true},
        {"name","Niels"},
        {"nothing",nullptr},        
        {"list",{1,0,"2"}},
        {"object0",{{"everything",42}}},
        {"object1",{
            {"currency","USD"},
            {"value",42.99}
        }}       
    };

    std::ofstream o("0.json");
    //o << std::setw(4) << out << std::endl;    //格式化输出
    o << out.dump(4) << std::endl;              //格式化输出

    //读
    std::ifstream i("0.json");
    json myJSON;
    i >> myJSON;
    std::cout << myJSON.dump(4) << std::endl;   

    //查
    std::cout << myJSON["list"] << std::endl;               //查具体键的值
    for (auto i = myJSON.begin(); i != myJSON.end(); i++)   //查根目录的所有键。myJSON["object1"]查object1的所有键
    {
        std::cout << "key:" << i.key() << std::endl;
    }

    //增
    myJSON["pi2"] = 3.1415;
    myJSON["happy2"] = false;
    myJSON["list2"] = { "str",20 };
    myJSON["object2"] = { {"currency","RMB"},{"value",233.1} };
    std::cout << std::setw(4) << myJSON << std::endl;

    //改
    myJSON["pi2"] = 5.15;
    myJSON["list"][1] = 5;              //改数组的第2个元素
    myJSON["object2"]["value"] = 230;   //改object2的键value的值
    std::cout << std::setw(4) << myJSON << std::endl;

    //删
    myJSON.erase("pi2");                //删根目录的pi2键值对
    myJSON["object2"].erase("value");   //删object2目录的value键值对
    std::cout << myJSON.dump(4) << std::endl;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

chen510 发表于 2023-3-14 11:26
楼主说的很详细,我正好需要,谢谢您
braveyly 发表于 2023-3-14 11:28
newlan 发表于 2023-3-14 11:30
dongping75 发表于 2023-3-14 11:32
楼主说的很详细,我正好需要,谢谢您
ChaChaL 发表于 2023-3-14 13:33
牛啊,牛啊,34K starts!!!
zoroxs 发表于 2023-3-16 10:05
这个还是蛮有用的,感谢
DDobby 发表于 2023-3-31 13:23
正在学习,感谢分享
fyh505099 发表于 2023-8-18 09:10
键值支持中文吗
coolbye 发表于 2023-12-3 12:33
这个,fastjson等等,有什么比较的优缺点吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表