JSON for Modern C++ 实现 json 对象和 结构体数据的转换

方法

  • json 对象 j 从结构体 person 对象 p 中取数据,需要实现 to_json 函数
void to_json(json& j, const person& p) {
        j = json{{"name", p.name}, {"address", p.address}, {"age", p.age}};
    }
  • 结构体 person 对象 pjson 对象 j 中取数据,需要实现 from_json 函数
void from_json(const json& j, person& p) {
        j.at("name").get_to(p.name);
        j.at("address").get_to(p.address);
        j.at("age").get_to(p.age);
    }
  • 用法
json j = p;	//调用 to_json
person p = j.get<person>();	//调用from_json
个人实现代码
struct SubModelData{
    std::string module_key_name;
    std::string json_type;
    std::string default_value;
};

void from_json(const nlohmann::json& j,SubModelData& sub_model_data){
    j.at("default_value").get_to(sub_model_data.default_value);
    j.at("json_type").get_to(sub_model_data.json_type);
    j.at("key_name").get_to(sub_model_data.module_key_name);
}

// 使用
SubModelData sub_model_data = j.get<SubModelData>();

注意:
函数 from_jsonto_json 以及结构体声明要放在同一命名空间下,不然会找不到对应的函数隐式调用

更多使用帮助文档: https://github.com/nlohmann/json

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈乐乐happy

觉得对你有用的话可以打赏打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值