日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nlohmann/json 的用法示例

發布時間:2024/3/24 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nlohmann/json 的用法示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

nlohmann/json 是一個C++實現的JSON解析器,使用非常方便直觀。由于查看文檔篇幅過長,不便于迅速閱讀抓重點。而且,所舉例的某些用法實踐上其實比較少用到,而某些實踐上常用到的一些用法,官網卻缺例子。所以自己簡要總結了一下它的主要用法,并加上自己寫的示例,希望能給到新接觸該庫的朋友一些幫助。

下載使用方法

下載地址:

https://github.com/nlohmann/json/tree/develop/single_include/nlohmann/json.hpp

這是一個單獨的C++頭文件,所有的代碼都在這個頭文件里,實現代碼都是內聯實現,因此,只需要在CPP文件里包含這一個頭文件即可。

引入頭文件

#include "nlohmann/json.hpp" using json = nlohmann::json;

使用示例:

1、聲明與構造

json j1; json j2 = json::object(); json j3 = json::array();std::cout << j1.type_name() << std::endl; // output: null std::cout << j2.type_name() << std::endl; // output: object std::cout << j3.type_name() << std::endl; // output: array

2、內容構造

json j = R"({"name": "Judd Trump","credits": 1754500,"ranking": 1} )"_json;//或者 json j{{ "name", "Judd Trump"},{ "credits", 1754500 },{ "ranking", 1} };

?3、解析與序列化

//解析 std::string s = R"({"name": "Judd Trump","credits": 1754500,"ranking": 1})"; auto j = json::parse(s);//序列化 std::string str = j.dump();

?4、解析文件

假設一個JS文本文件 c:\test.json 內容如下:

[{"name": "Judd Trump","credits": 1754500,"ranking": 1},{"name": "Neil Robertson","credits": 1040500,"ranking": 2},{"name": "Ronnie O'Sullivan","credits": 954500,"ranking": 3} ]

則解析的代碼如下:

json j; std::ifstream("c:\\test.json") >> j;

5、將JSON對象存為文件

json j; std::ofstream("d:\\rankings.json") << j;

6、修改JSON對象

json j{{ "name", "Judd Trump"},{ "credits", 1754500 },{"ranking", 1}};std::cout << j << endl;j["name"] = "Wang Daniu"; //j.at("name") = "Wang Daniu";std::cout << j << endl;

輸出結果:

{"credits":1754500,"name":"Judd Trump","ranking":1} {"credits":1754500,"name":"Ding Junhui","ranking":1}

7、與C++對象互相轉換

struct Player{string name;int credits;int ranking; };//1.重載轉換函數 void to_json(nlohmann::json& j, const Player& p) {j = json{ {"name", p.name}, {"credits", p.credits}, {"ranking", p.ranking} }; }void from_json(const nlohmann::json& j, Player& p) {j.at("name").get_to(p.name);j.at("credits").get_to(p.credits);j.at("ranking").get_to(p.ranking); }//2.示例 auto j = R"([{"name": "Judd Trump","credits": 1754500,"ranking": 1},{"name": "Neil Robertson","credits": 1040500,"ranking": 2},{"name": "Ronnie O'Sullivan","credits": 954500,"ranking": 3} ])"_json; std::vector<Player> players = j.get<std::vector<Player>>();std::cout << "name: " << players[2].name << std::endl; std::cout << "credits: " << players[2].credits << std::endl; std::cout << "ranking: " << players[2].ranking << std::endl;

總結

以上是生活随笔為你收集整理的nlohmann/json 的用法示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。