Poco 迭代嵌套的 JSON 对象
Poco Iterating Nested JSON Objects
我有一个带有嵌套对象的JSON(这是一个虚构的例子,因为真正的json更大更复杂(。我需要遍历siblings
对象。我知道如何使用数组来做到这一点,但找不到任何示例来处理这种嵌套对象(任何嵌套深度(。
任何想法都是值得赞赏的。
{
.......
"siblings":{
"Michael":{
"age":20,
"lives":"Dodoma"
},
"Polyasi":{
"age":25,
"lives":"Geita"
},
"Kiah":{
"age":3,
"lives":"Dar es Salaam"
}
}
...........
}
所以我发现 ValueMap::Iterator 并不关心它是对象还是原子值,它对它们一视同仁。这是我创造的一个例子来实际测试这个。感谢@atomic_alarm推动我测试我放弃作为潜在解决方案的东西。
packagist.json实际上被重命名为JSON文件。这是代码。确保链接到基础库和 json 库。
#include <Poco/JSON/Parser.h>
#include <Poco/Dynamic/Var.h>
#include <string>
#include <fstream>
#include <streambuf>
#include <iostream>
void print_version_names(Poco::JSON::Object::Ptr root);
int main(int argc, char** argv)
{
//read file
std::ifstream t("packagist.json");
std::string json_str((std::istreambuf_iterator<char>(t)),
std::istreambuf_iterator<char>());
Poco::JSON::Parser parser;
Poco::Dynamic::Var result = parser.parse(json_str);
Poco::JSON::Object::Ptr json = result.extract<Poco::JSON::Object::Ptr>();
print_version_names(json);
return 0;
}
void print_version_names(Poco::JSON::Object::Ptr root)
{
std::string root_key = "package";
std::string key = "versions";
//no checks whether such key acually exists
Poco::JSON::Object::Ptr package_json = root->getObject(root_key);
//get the nested objects
Poco::JSON::Object::Ptr nested_versions = package_json->getObject(key);
//iterate the map
Poco::JSON::Object::Iterator it;
for(it = nested_versions->begin(); it != nested_versions->end(); it++)
{
//no check of whether it is an object
std::cout<<it->first<<"n";
}
}
结果:
2.0.0
2.0.0-alpha
2.0.0-beta
2.0.0-rc
2.0.1
2.0.10
2.0.11
2.0.11.1
2.0.11.2
2.0.12
2.0.2
2.0.3
2.0.4
2.0.5
2.0.6
2.0.7
2.0.8
2.0.9
相关文章:
- 有没有办法让编译器在我放置字符串而不是 nlohmann::json 对象时抛出错误?
- 如何使用 picojson.h 在 c++ 中从头开始创建 json 对象
- .value( "key" , default) 不适用于空的 json 对象吗?
- Rapidjson 遍历并获取复杂 JSON 对象成员的值
- JSON对象到C++模型
- 使用 NLOHMANN JSON 在 C++ 中创建嵌套的 JSON 对象
- 如何在 c++ 中从两个向量创建 JSON 对象?
- 如何正确解析 Java+C++ TCP 连接中的 JSON 对象?
- 如何将矢量转换为 json 对象?C++
- 将C++具有 150+ 变量的类转换为 Json 对象
- Poco 迭代嵌套的 JSON 对象
- 如何提取由特定模式分开的JSON对象字符串
- 如何创建具有分层对象和值的 json 对象
- 将 JSON 对象作为参数在 JNI 中传递给 CPP,并在 CPP 中检索 JSON 对象的数据
- 无法区分 JSON 对象/数组/字符串
- 如何将 cpr 的获取响应转换为 json 对象?
- 我正在尝试打开一个 json 文件.并将其存储为 JSON 对象
- 如何在不更改 C++ 中的值的情况下更改 json 对象名称
- 如何将Nolhmann JSON对象分成字符串
- Cpp:Cpp中的JSON解析器,提供支持序列化/反序列化功能,将JSON对象转换为用户定义的类