Json jq:迭代内部多重数组

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,

我有以下JSON文件

{
    "@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$