gpt4 book ai didi

c++ - 如何使用 C++ 解析 json 中的嵌套数组

转载 作者:太空狗 更新时间:2023-10-29 21:39:54 26 4
gpt4 key购买 nike

我知道如何在 C++ 中解析“正常”的 JSON 数据。通常,我这样做是使用 boost::property_treeread_json 方法。它可能看起来像这样:

BOOST_FOREAH(ptree::value_type &v, pt.get_child("rows"){
vec.push_back(v.second.get<std::string>("key"));
}

上面的代码对应这个JSON文件:

{
"rows":[{
"key":"1"
},{
"key":"2"
}]
}

但是,我得到的 Neo4j 结果集看起来像:

{
"columns":{...},
"data":[[["object 1"]], [["object 2"]], [["object 3"]]]
}

我感兴趣并想解析“数据”节点。我试着这样做:

BOOST_FOREAH(ptree::value_type &v, pt.get_child("data"){
vec.push_back(v.second.data());
}

但这行不通。我没有收到错误,但我的 vector vec 仍然是空的,或者更准确地说,它填充了空值。因此,当我遍历此 vec 时,我看到了许多元素,但它们没有任何值(value)。然而,我想要值 "object 1""object 2""object 3"

最佳答案

解决方案如下所示:

using boost::property::ptree;
ptree pt;
//... populate ptree pt with data from some source
BOOST_FOREACH(ptree::value_type &v, pt.get_child('data')){
ptree subtree1 = v.second;
BOOST_FOREACH(ptree::value_type &vs, subtree1){
ptree subtree2 = vs.second;
BOOST_FOREACH(ptree::value_type &vs2, subtree2){
do_something(vs2.second.data());
}
}
}

这段代码可以解析这样的 JSON 结构:

{
"data":[[["object 1"]], [["object 2"]], [["object 3"]]]
}

所以,与某些人所说的相反,实际上,没有必要使用其他第三方库。只需使用 boost 即可完成。

关于c++ - 如何使用 C++ 解析 json 中的嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31898272/

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