zuoyizhongguo 发表于 2023-3-14 11:06

nlohmann库(C++)对json的读写增删改查

官网:Releases · nlohmann/json (github.com)

直接上代码:
#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"] = 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

这个对JSON有原子操作了。

dongping75 发表于 2023-3-14 11:32

楼主说的很详细,我正好需要,谢谢您

ChaChaL 发表于 2023-3-14 13:33

牛啊,牛啊,34K starts!!!{:1_893:}

zoroxs 发表于 2023-3-16 10:05

这个还是蛮有用的,感谢

DDobby 发表于 2023-3-31 13:23

正在学习,感谢分享

fyh505099 发表于 2023-8-18 09:10

键值支持中文吗{:1_904:}

coolbye 发表于 2023-12-3 12:33

这个,fastjson等等,有什么比较的优缺点吗
页: [1]
查看完整版本: nlohmann库(C++)对json的读写增删改查