gpt4 book ai didi

c++ - 如何在使用 JsonCpp 编写 JSON 时忽略空对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:10 24 4
gpt4 key购买 nike

根据Google JSON style guide ,建议删除空值或空值。

使用 JsonCpp 时,如何从对象结构或写入流时删除空值或 null 值?

我想要以下代码:

#include <json/json.h>
#include <json/writer.h>

Json::Value json;
json["id"] = 4;
// The "name" property is an empty array.
json["name"] = Json::Value(Json::arrayValue);
Json::FastWriter fw;
std::cout << fw.write(json) << std::endl;

生产:

{
"id": 4,
}

最佳答案

您可以添加一个预处理来删除空成员,例如:

void RemoveNullMember(Json::Value& node)
{
switch (node.type())
{
case Json::ValueType::nullValue: return;
case Json::ValueType::intValue: return;
case Json::ValueType::uintValue: return;
case Json::ValueType::realValue: return;
case Json::ValueType::stringValue: return;
case Json::ValueType::booleanValue: return;
case Json::ValueType::arrayValue:
{
for (auto &child : node)
{
RemoveNullMember(child);
}
return;
}
case Json::ValueType::objectValue:
{
for (const auto& key : node.getMemberNames())
{
auto& child = node[key]
if (child.empty()) // Possibly restrict to any of
// nullValue, arrayValue, objectValue
{
node.removeMember(key);
}
else
{
RemoveNullMember(node[key]);
}
}
return;
}
}
}

最后:

Json::Value json;
json["id"] = 4;
json["name"] = Json::Value(Json::arrayValue); // The "name" property is an empty array.
RemoveNullMember(json); // Or make a copy before.
Json::FastWriter fw;
std::cout << fw.write(json) << std::endl;

关于c++ - 如何在使用 JsonCpp 编写 JSON 时忽略空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42496890/

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