问题标签 [nlohmann-json]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1488 浏览

c++ - Nlohmann json 得到类型推导

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

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

但是,type x; x = json;不起作用,因为这需要为type.

我发现自己需要比表达式 (1) 更频繁地使用表达式 (2)。这可能会很烦人,尤其是在type复杂的情况下。在少数情况下,我定义

get但是,如果有一个将引用作为参数的重载,那就太好了,这样就可以实现以下操作。

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

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

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

0 投票
1 回答
995 浏览

c++ - 如何将派生类从基 ptr 分配给 nlohmann::json

我正在玩某种共享对象框架。它使用 nlohmann::json 来提供消息传递和配置,并根据 json 配置加载消息处理程序和数据源。

由于我使用的值类都派生自基类 Value,因此我希望所有开发人员都可以在 lib 中创建自己的值类。因此,我需要一种机制来将这样的值分配给 json 对象。

但是,如果我只使用指向基类的指针,我怎么能做到这一点呢?

(示例也在https://github.com/Plurax/SOjsonassign上)

还有一个问题:我的代码目前使用的是自己的字符串包装器,它派生自 Baseclass。我曾经从提供“asString”的模板 Base 派生,返回我的字符串类,因为它在基类中不可用。

自己的字符串类的唯一原因是提供一个通用的值接口。是否有另一种方法来获得通用接口?

0 投票
2 回答
983 浏览

c++ - 如何反序列化一个数组?

我正在使用nlohmann::json库来序列化/反序列化json. 下面是我如何序列化一个C++双精度数组:

哪个产品:

但是现在,我怎样才能反序列化回mLengths?试过:

但它说expression must be a modifiable lvalue。如何恢复阵列?

0 投票
1 回答
1489 浏览

c++ - 为什么 nlohmann/json 在 double 上序列化“null”而不是“0”?

假设我部分初始化了一个本地双数组C++并使用以下命令对其进行序列化nlohmann/json

它将正确序列化如下内容:

但有时,它不是从内存中获取“随机双精度”,而是在 json 中存储值 null,因此会产生如下结果:

当我反序列化它时,它给我抛出了一个异常type must be number, but is null

为什么它序列化null而不是0?它是否会从记忆中获取“空”的东西?C++中不是0吗?

0 投票
1 回答
8754 浏览

c++ - c++,使用 nlohmann::json 解析 JSON 数组

在导入到我的 c++ 程序中的 json 文件中,结构如下:

我想遍历"ec"数组并获取所有数组的值,"a"并且每个数组的值都"a"相同s

首先我得到了大小,ec但是从我理解的文档中我应该对其余部分使用迭代器

但是得到这个例外nlohmann::detail::invalid_iterator at memory location ,我认为这j["ec"].begin()是不正确的。

我该怎么做,谢谢。

0 投票
2 回答
2884 浏览

c++ - c++,JSON,获取数组中的对象成员

nlohmann::json用于在程序中解析 json。

给定一个json,有一个包含多个对象的数组,根据我想要获取同一对象的其他成员的对象成员之一。

就像在下面的 json

例如,如果值为ais 2,我想获取同一索引/对象的 b,c,... 的值。

目前我正在使用一个 for 循环,并在索引处j["arr"][i]["a"].get<int> == 2为其他成员使用。由于数组可能有数百个成员,这是无稽之谈。

在这种情况下最好的方法是什么?

0 投票
1 回答
214 浏览

linux - nlohmann json 有一个名为 name 的字符串成员,我如何检查它是 null 还是有效字符串

我知道我有这个:

它用于 C++。协议说这个成员是强制性的,但很多人没有第三名。

如果是,我有例外

,因为我可以说

如何轻松检查它是否有效?

我只发现了一种非常复杂的形式。

0 投票
1 回答
173 浏览

c++ - 为什么 json 文件会从 c++ 中删除旧输入?

我需要制作一个存储用户名和密码的程序。我想将它们存储在 json 文件中。我已经制作了一个可以做到这一点的程序,但是它会删除旧的输入并将它们重写为新的。

例如我们输入用户名:admin,密码:admin。它创建一个 json 文件并存储它们:

}

但是当我再次运行程序并且这次输入用户名:用户,密码:用户时,它将管理员替换为用户。所以基本上它只存储一个输入。但我需要它来存储所有这些。所以我以后可以访问它们。

这不好。你能帮我解决这个问题或提出其他建议吗?

0 投票
1 回答
1336 浏览

c++ - 如何在不更改 C++ 中的值的情况下更改 json 对象名称?

我正在将 json 用于现代 C++。我有一个 json 文件,其中包含一些数据,例如:

我找到了一种修改“Adrese”、“Name”、“Shortname”值的方法。如您所见,我将“名称”和关键元素名称设置为相同的东西。

但我需要更改关键元素和值“名称”。

所以最后当我以某种方式在代码中修改它时,它看起来像:

我试过了:

然后我尝试了类似的东西:

但这也没有用。

我想要 j["London"] = "Something_new" 之类的东西,并让它保留原来为 "London" 的所有值。

0 投票
1 回答
6911 浏览

c++ - 使用 nlohmann json 将整数列表解包到 std::vector

我正在使用https://github.com/nlohmann/json

这很棒。

但是..有什么办法可以解压:

变成一个std:vector<int>

我找不到任何提及,并且std::vector<int> v = j["my_list"];失败了j["my_list"].get<std::vector<int>>()

交联到https://github.com/nlohmann/json/issues/1460