当前位置: 首页 > news >正文

wordpress内容批量替换百度seo排名在线点击器

wordpress内容批量替换,百度seo排名在线点击器,莱芜金点子信息港电子版官网,安徽四建东方建设有限公司网站在 C 编程中,处理 JSON 数据是一项常见任务,特别是在需要与其他系统或前端进行数据交换时。nlohmann::json 库是一个功能强大且易于使用的 JSON 库,它允许我们轻松地在 C 中进行 JSON 数据的序列化和反序列化。本文将详细介绍如何使用 nlohma…

在 C++ 编程中,处理 JSON 数据是一项常见任务,特别是在需要与其他系统或前端进行数据交换时。nlohmann::json 库是一个功能强大且易于使用的 JSON 库,它允许我们轻松地在 C++ 中进行 JSON 数据的序列化和反序列化。本文将详细介绍如何使用 nlohmann::json 库对结构体和枚举类型进行序列化和反序列化。

一、结构体的 JSON 序列化和反序列化
1. 序列化方法 to_json

要将结构体转换为 JSON 对象,我们需要定义一个 to_json 函数。这个函数接收一个 nlohmann::json 引用和一个结构体实例,并将结构体的字段填充到 JSON 对象中。

inline void to_json(nlohmann::json &j, const YourStruct &p)
{j = nlohmann::json{{"field1", p.field1},{"field2", p.field2},// 添加其他字段};
}

在这个例子中,YourStruct 是一个自定义的结构体,field1field2 是它的字段。通过 to_json 函数,我们可以将 YourStruct 实例转换为 JSON 对象。

2. 反序列化方法 from_json

要从 JSON 对象中提取数据并填充到结构体中,我们需要定义一个 from_json 函数。这个函数同样接收一个 nlohmann::json 引用和一个结构体引用,并从 JSON 对象中提取数据并赋值给结构体的字段。

inline void from_json(const nlohmann::json &j, YourStruct &p)
{try {j.at("field1").get_to(p.field1);j.at("field2").get_to(p.field2);// 添加其他字段} catch (const nlohmann::json::exception& e) {// 处理解析错误,例如设置默认值或标记错误p.field1 = default_value1;p.field2 = default_value2;// 或者抛出异常// throw std::runtime_error("Failed to parse JSON: " + std::string(e.what()));}
}

在这个例子中,我们使用 try-catch 块来捕获可能的异常,例如 JSON 对象中缺少某个键。如果捕获到异常,我们可以选择设置默认值或抛出异常。

二、枚举类型的 JSON 序列化和反序列化

处理枚举类型的 JSON 序列化和反序列化时,我们可以使用 NLOHMANN_JSON_SERIALIZE_ENUM 宏来简化工作。

enum class YourEnum {Value1,Value2,// 添加其他枚举值
};NLOHMANN_JSON_SERIALIZE_ENUM(YourEnum,{ { YourEnum::Value1, "Value1" },{ YourEnum::Value2, "Value2" },// 添加其他枚举值})

在这个例子中,我们定义了一个枚举类型 YourEnum,并使用 NLOHMANN_JSON_SERIALIZE_ENUM 宏来定义枚举值的字符串表示形式。这样,YourEnum::Value1 将被序列化为字符串 "Value1",反之亦然。

三、示例代码

假设我们有两个结构体 RobotMsgRtdeRecipe,以及两个枚举类型 RuntimeStateRobotModeType。以下是完整的示例代码:

#include <nlohmann/json.hpp>
#include <vector>
#include <string>
#include <stdexcept>// 引入 JSON 库命名空间
using json = nlohmann::json;// 枚举类型定义及序列化
enum class RuntimeState {Running,Retracting,Pausing,Paused,Stopping,Stopped,Aborting
};NLOHMANN_JSON_SERIALIZE_ENUM(RuntimeState,{ { RuntimeState::Running, "Running" },{ RuntimeState::Retracting, "Retracting" },{ RuntimeState::Pausing, "Pausing" },{ RuntimeState::Paused, "Paused" },{ RuntimeState::Stopping, "Stopping" },{ RuntimeState::Stopped, "Stopped" },{ RuntimeState::Aborting, "Aborting" } })// 结构体定义及序列化/反序列化
struct RobotMsg {int64_t timestamp;int level;int code;std::string source;std::vector<std::string> args;
};inline void to_json(json &j, const RobotMsg &p)
{j = json{{"timestamp", p.timestamp},{"level", p.level},{"code", p.code},{"source", p.source},{"args", p.args}};
}inline void from_json(const json &j, RobotMsg &p)
{try {j.at("timestamp").get_to(p.timestamp);j.at("level").get_to(p.level);j.at("code").get_to(p.code);j.at("source").get_to(p.source);j.at("args").get_to(p.args);} catch (const json::exception& e) {// 解析无效p.code = -1;// 或者抛出异常// throw std::runtime_error("Failed to parse JSON: " + std::string(e.what()));}
}
http://www.yayakq.cn/news/270074/

相关文章:

  • 用wordpress做的站点江苏省建设教育协会网站
  • 杭州设计师网站淄博网站建设优化
  • 网站开发思路怎么写网站建设宀金手指排名
  • 扬州市城乡建设局网站宿迁房产网二手房出售
  • WordPress360收录百度seo关键词点击软件
  • 深圳三站合一网站建设做宣传册从哪个网站找素材
  • go语言网站开发教程wordpress如何添加菜单和数据表
  • 学习网站二次开发东莞网站优化指导
  • 南昌做网站建设哪家好WordPress手机不显示
  • 网站开发主机的选择化妆品营销型网站案例
  • 制作企业网站宣传图步骤学校网站开发实际意义
  • 青县建设银行网站企业年报系统
  • 网站怎么做评估深圳纯手工seo
  • 做推广可以在哪些网站发布软文网页开发工资多少
  • 个人简历电子版免费下载关键词seo排名怎么选
  • 建设网站的模板下载百度搜索引擎下载
  • 一个网站有多少glogo图片大全简单
  • 专业pc网站建设怎样做一个网站首页
  • wordpress图片墙百度搜索引擎优化的推广计划
  • dede怎么做网站pc站转换手机网站
  • net淘宝网站开发的例子做网站签到挣钱吗
  • 网店装修网站没有网站 可以做百度口碑吗
  • 网站制作协议书wordpress 前台不显示图片
  • 惠东做网站报价网站设计报价表
  • 电子商务网站建设需求制作软件的公司有哪些
  • 做软件的网站php站长平台seo
  • 网站与网络的区别公司的论坛与网站绑定
  • 织梦网站案例网站建站前seo注意
  • 成都专业网站建设公司排名上海网站设计建设公
  • 深圳营销型企业网站苏州装饰公司