【发布时间】:2018-08-11 03:08:48
【问题描述】:
我有以下 JSON 对象
{
"prog":[
{
"iUniqueID":1,
"bGroup":1,
"inFiles":[
{
"sFileType":"Zonal Data 1",
"bScenarioSpecific":0,
"pos":{
"x1":1555,
"y1":-375,
"x2":1879,
"y2":-432
}
},
{
"sFileType":"Record File",
"bScenarioSpecific":0,
"pos":{
"x1":1555,
"y1":-436,
"x2":1879,
"y2":-493
}
}
],
"outFiles":[
{
"sFileType":"Record File 1",
"bScenarioSpecific":1,
"pos":{
"x1":2344,
"y1":-405,
"x2":2662,
"y2":-462
}
}
]
},
{
"iUniqueID":2,
"bGroup":1,
"inFiles":[
{
"sFileType":"Matrix File 1",
"bScenarioSpecific":0,
"pos":{
"x1":98,
"y1":-726,
"x2":422,
"y2":-783
}
},
{
"sFileType":"Matrix File 2",
"bScenarioSpecific":0,
"pos":{
"x1":98,
"y1":-787,
"x2":422,
"y2":-844
}
}
],
"outFiles":[
{
"sFileType":"Record File 1",
"bScenarioSpecific":1,
"pos":{
"x1":887,
"y1":-966,
"x2":1205,
"y2":-1023
}
}
]
}
]
}
如何迭代地访问“inFiles”中的 x1 个对象?或者一般来说,如何使用 rapidjson 访问存储在子数组和子对象中的值。这是我到目前为止所拥有的
const Value& prog = document["prog"];
assert(prog.IsArray());
for (rapidjson::Value::ConstValueIterator itr = prog.Begin(); itr != prog.End(); ++itr) {
}
我尝试了很多方法,但我的代码无法编译,因此我觉得将其添加到问题描述中会很有成效。
【问题讨论】:
-
请提供minimal reproducible example 以及您收到的确切编译命令和错误消息。此外,如果代码无法编译,则 JSON 的内容也无关紧要。
-
jq怎么样?cat f.json | jq .prog[].inFiles[].pos.x1