JsonCpp:如何在 Json::Value 中获取空对象?

Ale*_*exV 2 c++ jsoncpp

我有一个接收 aJson::Value作为参数的外部库。然后它会输出一个包含 JSON 结构的字符串,我Json::Value在该结构中的某处传递。

我正在尝试使用JsonCpp{}在其中放置一个空对象。Json::Value

最终,我试图从std::string包含"{}"Json::Value.

当我声明 aJson::Value并且什么都不做并将它传递给我的图书馆时,我得到NULL而不是{}......

小智 5

样本:

Json::Value root;
Json::Reader reader;
reader.parse("{}", root);
assert(root != Json::nullValue);
std::string someStr = Json::FastWriter().write(root);
assert(someStr == "{}\n");
Run Code Online (Sandbox Code Playgroud)

所有断言都通过,因此解析的对象没有空值,当您将其写回字符串时,您会得到空对象"{}"。这对你不起作用吗?


小智 5

它可能对某人有帮助:在当前版本中。我正在使用 - 1.8.2,你可以得到这样的空对象:

Json::Value root;
root = Json::objectValue;
Run Code Online (Sandbox Code Playgroud)

  • 我需要进行类似的操作。我有一个现有的根,它需要一个命名的空对象(动态地,存在填充数据不可用的情况)。由于遗留原因,指定的 null 子代不会删除它。由于上述答案,我从各种愚蠢转向了这段甜蜜、优雅的代码: `Json::Value& sub_root = root["name"] = Json::objectValue;` 然后我可以填充 sub_root 或将其留空接收者会做正确的事情。这是从临时 JSON 构造到使用 JSONcpp 的转换。很高兴。上述答案应该被接受。 (2认同)