IT评测·应用市场-qidao123.com技术社区

标题: C++【nlohmann/json】库序列化与反序列化 [打印本页]

作者: 用多少眼泪才能让你相信    时间: 2024-11-19 02:00
标题: 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官方中的某版本代码



  1. //     __ _____ _____ _____
  2. //  __|  |   __|     |   | |  JSON for Modern C++
  3. // |  |  |__   |  |  | | | |  version 3.11.3
  4. // |_____|_____|_____|_|___|  https://github.com/nlohmann/json
  5. //
  6. // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me>
  7. // 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(枚举结构体)
  1. namespace Linshi {
  2. // NLOHMANN_DEFINE_TYPE_INTRUSIVE(key,成员,成员);
  3. // 头文件中定义序列化与反序列化使用的结构体
  4. struct Test {
  5.     int type;
  6.     int color;
  7.     int id;
  8.     std::vector<std::pair<double, double>> point;
  9.     NLOHMANN_DEFINE_TYPE_INTRUSIVE(Test , type, color, id, point);
  10. };
  11. struct Tests {
  12.     std::vector<Test> tests;
  13.     NLOHMANN_DEFINE_TYPE_INTRUSIVE(Tests , tests);
  14. };  }
  15. // 头文件搞个模板/或者直接使用json成员函数进行序列、反序列
  16. // 序列化
  17. const Linshi::Test test_js = {}; // 自定义C++对象初始值
  18. nlohmann::json json_obj(test_js); // json对象赋值方式1
  19. json_obj = {{"type",test_js.type},{"color",test_js.color},{"关键字成员",成员C++值}};//赋值方式1
  20. std::string json_str = json_obj.dump();
  21. // 反序列化
  22. {
  23. // const char* msg 假设是Tests 的json字符串
  24. nlohmann::json json_obj_ = nlohmann::json::parse(msg);
  25. // at入参关键字进行解析json,at函数在json库有两种:非常量和常量JSON 对象
  26. Linshi::Test test_obj = json_obj_.at(Tests).at(Test);
  27. Linshi::Tests tests_obj = json_obj_.at(Tests);
  28. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4