马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.nlohmann/json官方网站
GitHub - nlohmann/json: JSON for Modern C++
Overvew - JSON for Modern C++
上述是点击就进入,下面的是要自己粘
https://github.com/nlohmann/json
https://json.nlohmann.me/api/basic_json/
2.利用过的nlohmann/json官方中的某版本代码
- 利用方式:将其nlohmann文件夹加入,包罗其头文件json.hpp即可
- // __ _____ _____ _____
- // __| | __| | | | JSON for Modern C++
- // | | |__ | | | | | | version 3.11.3
- // |_____|_____|_____|_|___| https://github.com/nlohmann/json
- //
- // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me>
- // SPDX-License-Identifier: MIT
复制代码 3.nlohmann库的序列化与反序列化简单利用demo
发送方:C++对象转json对象,将json对象转json字符串,然后以字节省发过来;
接收方:需对字节省转成 string范例(json字符串)->利用json::parse转成json对象(json对象根据两边信号协议界说多种id)->赋值给自界说的C++对象
项目头脑:发送和接收端中间界说复用的nlohmann::json::number_integer_t id(枚举结构体)
- namespace Linshi {
- // NLOHMANN_DEFINE_TYPE_INTRUSIVE(key,成员,成员);
- // 头文件中定义序列化与反序列化使用的结构体
- struct Test {
- int type;
- int color;
- int id;
- std::vector<std::pair<double, double>> point;
- NLOHMANN_DEFINE_TYPE_INTRUSIVE(Test , type, color, id, point);
- };
- struct Tests {
- std::vector<Test> tests;
- NLOHMANN_DEFINE_TYPE_INTRUSIVE(Tests , tests);
- }; }
- // 头文件搞个模板/或者直接使用json成员函数进行序列、反序列
- // 序列化
- const Linshi::Test test_js = {}; // 自定义C++对象初始值
- nlohmann::json json_obj(test_js); // json对象赋值方式1
- json_obj = {{"type",test_js.type},{"color",test_js.color},{"关键字成员",成员C++值}};//赋值方式1
- std::string json_str = json_obj.dump();
- // 反序列化
- {
- // const char* msg 假设是Tests 的json字符串
- nlohmann::json json_obj_ = nlohmann::json::parse(msg);
- // at入参关键字进行解析json,at函数在json库有两种:非常量和常量JSON 对象
- Linshi::Test test_obj = json_obj_.at(Tests).at(Test);
- Linshi::Tests tests_obj = json_obj_.at(Tests);
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |