C++【nlohmann/json】库序列化与反序列化
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即可
https://i-blog.csdnimg.cn/direct/59edab12eb684db6b0f5db68ed4e5b3a.png
// __ _____ _____ _____
//__|| __| | | |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企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]