gpt4 book ai didi

c++ - 如何打印 JSON 数组

转载 作者:行者123 更新时间:2023-11-28 04:37:01 24 4
gpt4 key购买 nike

我试过了,但似乎循环太多了。有什么最优的方法吗?

输入JSON:

{"errors":[{"key":"XYZ","code":37373,"message":"无效的 XYZ 代码"}]}

解决方案中的硬代码 key ,不是问题。

我尝试通过以下解决方案进行打印:

if(!aJsonDocument.Parse<0>(aResponseJson.c_str()).HasParseError())
{
for(rapidjson::Value::ConstMemberIterator iter = aJsonDocument.MemberBegin(); iter != aJsonDocument.MemberEnd(); ++iter)
{
if(iter->name.IsString() && iter->value.IsArray())
{
std::string aKey = iter->name.GetString();
const rapidjson::Value& aJsonData = aJsonDocument[aKey.c_str()];
if(aJsonData.IsArray())
{
for (rapidjson::SizeType i = 0; i < aJsonData.Size(); i++)
{
for(rapidjson::Value::ConstMemberIterator iter1 = aJsonData[i].MemberBegin(); iter1 != aJsonData[i].MemberEnd(); ++iter1)
{
std::string aKey = iter1->name.GetString();
boost::trim(aKey);
std::string aValue = iter1->value.GetString();
boost::trim(aValue);
std::cout<< "Key: " << aKey << ", Value:" << aValue << endl;;

}
}
}
}
}
}

最佳答案

您可以先使用JSON schema in RapidJSON验证 JSON,因此您无需手动编写所有检查代码,例如 IsObject()IsArray() 等。

然后,要在 C++11 中迭代数组和对象,您可以使用基于范围的 for:

for (auto& error : d["errors"].GetArray())
for (auto& m : error.GetObject())
std::cout << m.name.GetString() << ", " << m.value.GetString() << std::endl;

关于c++ - 如何打印 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51133554/

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