Json jq:迭代内部多重数组
我有以下JSON文件Json jq:迭代内部多重数组,json,windows,iteration,jq,Json,Windows,Iteration,Jq,我有以下JSON文件 { "@odata.context": "https://from.some.API", "value": [ { "id": 2, "label": "Marketing and Public Relations", "parentname": [ { "id": 336,
{
"@odata.context": "https://from.some.API",
"value": [
{
"id": 2,
"label": "Marketing and Public Relations",
"parentname": [
{
"id": 336,
"label": "Marketing Software",
"children": [
{
"id": 16543,
"label": "Sun Application Server"
},
{
"id": 15735,
"label": "Kenshoo"
}
]
}
]
},
{
"id": 3,
"label": "Sales",
"parentname": [
{
"id": 115,
"label": "Online Sales",
"children": [
{
"id": 9919,
"label": "Online Sales"
},
{
"id": 9489,
"label": "Internet Sales"
}
]
},
{
"id": 115,
"label": "Online Sales2",
"children": [
{
"id": 9919,
"label": "Online Sales2"
},
{
"id": 9489,
"label": "Internet Sales2"
}
]
}
]
}
]
}
我试着像下面这样提取
{
"main": "Marketing and Public Relations",
"parent": "Marketing Software",
"children": [
"Sun Application Server",
"Kenshoo"
]
}
{
"main": "Sales",
"parent": "Online Sales",
"children": [
"Online Sales",
"Internet Sales"
]
}
{
"main": "Sales",
"parent": "Online Sales2",
"children": [
"Online Sales2",
"Internet Sales2"
]
}
但是对于下面的jq查询
键入Example.json | jq.value[]|{main:.label,parentname[].label,children:[.parentname[].children[].label]}”
我得到的结果是
{
"main": "Marketing and Public Relations",
"parent": "Marketing Software",
"children": [
"Sun Application Server",
"Kenshoo"
]
}
{
"main": "Sales",
"parent": "Online Sales",
"children": [
"Online Sales",
"Internet Sales",
"Online Sales2",
"Internet Sales2"
]
}
{
"main": "Sales",
"parent": "Online Sales2",
"children": [
"Online Sales",
"Internet Sales",
"Online Sales2",
"Internet Sales2"
]
}
我有时尝试只循环内部数组。但是在我的JSON中有多个内部数组,它只在主数组上迭代
任何建议都会有帮助。您只需在子阵列(.parentName)上迭代一次:
只需在子阵列(.parentName)上迭代一次:
这里还有一种实现同样目的的替代方法,使用基于步行路径的实用程序:
bash $ <file.json jtc -w'[value][:][label]<M>v[-1][parentname][:][label]<P>v[-1][children][0][label]<C>v[-2][1][label]' -T'{"main":{{M}},"parent":{{P}},"children":[{{C}},{{}}]}'
{
"children": [
"Sun Application Server",
"Kenshoo"
],
"main": "Marketing and Public Relations",
"parent": "Marketing Software"
}
{
"children": [
"Online Sales",
"Internet Sales"
],
"main": "Sales",
"parent": "Online Sales"
}
{
"children": [
"Online Sales2",
"Internet Sales2"
],
"main": "Sales",
"parent": "Online Sales2"
}
bash $
bash$这里还有一种实现相同功能的替代方法,使用基于漫游路径的实用程序:
bash $ <file.json jtc -w'[value][:][label]<M>v[-1][parentname][:][label]<P>v[-1][children][0][label]<C>v[-2][1][label]' -T'{"main":{{M}},"parent":{{P}},"children":[{{C}},{{}}]}'
{
"children": [
"Sun Application Server",
"Kenshoo"
],
"main": "Marketing and Public Relations",
"parent": "Marketing Software"
}
{
"children": [
"Online Sales",
"Internet Sales"
],
"main": "Sales",
"parent": "Online Sales"
}
{
"children": [
"Online Sales2",
"Internet Sales2"
],
"main": "Sales",
"parent": "Online Sales2"
}
bash $
bash$