gpt4 book ai didi

c++ - Nlohmann json 获取类型推导

转载 作者:行者123 更新时间:2023-11-28 01:29:36 33 4
gpt4 key购买 nike

nlohmann::json 可以使用几个不同的表达式来解析一个对象:

  1. type x = json;
  2. type x; x = json.get<type>();

然而,type x; x = json;不起作用,因为这需要为 type 添加一个新的赋值运算符.

我发现自己需要比表达式 (1) 更频繁地使用表达式 (2)。这会变得很烦人,尤其是如果 type是复杂的东西。在一些情况下,我定义了

template <typename U>
void convert(const json& j, U& x) { x = j.get<U>(); }

但如果 get 就好了有一个将引用作为参数的重载,因此以下内容是可能的。

type x;
json.get(x);

是否已经有一个函数可以做到这一点,只是名称不同?我在文档中找不到。

编辑:我已经提交了一个 issue在 GitHub 上。

编辑 2:get 的替代方案功能,T& get_to(T&) , 将包含在 3.3.0 版本中。

最佳答案

However, type x; x = json; doesn't work

它确实有效。 basic_json输入 has a templated conversion operator它只是调用 get<T>()为你。以下代码compiles just fine :

#include <nlohmann/json.hpp>

using nlohmann::json;

namespace ns {
struct MyType {
int i;
};

void to_json(json& j, MyType m) {
j = json{{"i", m.i}};
}

void from_json(json const& j, MyType& m) {
m.i = j.at("i");
}
}

int main() {
json j{{"i", 42}};
ns::MyType type;
type = j;
}

关于c++ - Nlohmann json 获取类型推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52191576/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com