我有以下输入JSON:

[
  {
    "id": "05301",
    "nome": "Região Metropolitana de Sorocaba",
    "UF": {
      "id": 35,
      "sigla": "SP",
      "nome": "São Paulo",
      "regiao": {
        "id": 3,
        "sigla": "SE",
        "nome": "Sudeste"
      }
    },
    "sub-regioes-metropolitanas": [
      {
        "id": "0530101",
        "nome": "Sub-região 1",
        "municipios": [
          {
            "id": 3500758,
            "nome": "Alambari"
          },
          {
            "id": 3507001,
            "nome": "Boituva"
          },
          {
            "id": 3510302,
            "nome": "Capela do Alto"
          },
          {
            "id": 3511508,
            "nome": "Cerquilho"
          },
          {
            "id": 3511607,
            "nome": "Cesário Lange"
          },
          {
            "id": 3522307,
            "nome": "Itapetininga"
          },
          {
            "id": 3525854,
            "nome": "Jumirim"
          },
          {
            "id": 3551108,
            "nome": "Sarapuí"
          },
          {
            "id": 3554003,
            "nome": "Tatuí"
          },
          {
            "id": 3554508,
            "nome": "Tietê"
          }
        ]
      }]},
  {
    "id": "05101",
    "nome": "Região Metropolitana de Campinas",
    "UF": {
      "id": 35,
      "sigla": "SP",
      "nome": "São Paulo",
      "regiao": {
        "id": 3,
        "sigla": "SE",
        "nome": "Sudeste"
      }
    },
    "sub-regioes-metropolitanas": [],
    "municipios": [
      {
        "id": 3501608,
        "nome": "Americana"
      },
      {
        "id": 3503802,
        "nome": "Artur Nogueira"
      }
    ]
  }
]

我需要以下输出:

[ [ {
  "id_rgia_mptn" : "05301",
  "nome_rgia_mptn" : "Região Metropolitana de Sorocaba",
  "id_sub_rgia_mptn" : "0530101",
  "nome_sub_rgia_mptn" : "Sub-região 1",
  "id_mcpo" : 3500758,
  "id_uf" : 35,
  "sgla_uf" : "SP",
  "id_rgia" : 3,
  "sgla_rgia" : "SE"
},
{
  "id_rgia_mptn" : "05301",
  "nome_rgia_mptn" : "Região Metropolitana de Sorocaba",
  "id_sub_rgia_mptn" : "0530101",
  "nome_sub_rgia_mptn" : "Sub-região 1",
  "id_mcpo" : 3507001,
  "id_uf" : 35,
  "sgla_uf" : "SP",
  "id_rgia" : 3,
  "sgla_rgia" : "SE"
},
{
  "id_rgia_mptn" : "05301",
  "nome_rgia_mptn" : "Região Metropolitana de Sorocaba",
  "id_sub_rgia_mptn" : "0530101",
  "nome_sub_rgia_mptn" : "Sub-região 1",
  "id_mcpo" : 3510302,
  "id_uf" : 35,
  "sgla_uf" : "SP",
  "id_rgia" : 3,
  "sgla_rgia" : "SE"
},
{
  "id_rgia_mptn" : "05301",
  "nome_rgia_mptn" : "Região Metropolitana de Sorocaba",
  "id_sub_rgia_mptn" : "0530101",
  "nome_sub_rgia_mptn" : "Sub-região 1",
  "id_mcpo" : 3511508,
  "id_uf" : 35,
  "sgla_uf" : "SP",
  "id_rgia" : 3,
  "sgla_rgia" : "SE"
},
{
  "id_rgia_mptn" : "05301",
  "nome_rgia_mptn" : "Região Metropolitana de Sorocaba",
  "id_sub_rgia_mptn" : "0530101",
  "nome_sub_rgia_mptn" : "Sub-região 1",
  "id_mcpo" : 3511607,
  "id_uf" : 35,
  "sgla_uf" : "SP",
  "id_rgia" : 3,
  "sgla_rgia" : "SE"
},
{
  "id_rgia_mptn" : "05301",
  "nome_rgia_mptn" : "Região Metropolitana de Sorocaba",
  "id_sub_rgia_mptn" : "0530101",
  "nome_sub_rgia_mptn" : "Sub-região 1",
  "id_mcpo" : 3522307,
  "id_uf" : 35,
  "sgla_uf" : "SP",
  "id_rgia" : 3,
  "sgla_rgia" : "SE"
},
{
  "id_rgia_mptn" : "05301",
  "nome_rgia_mptn" : "Região Metropolitana de Sorocaba",
  "id_sub_rgia_mptn" : "0530101",
  "nome_sub_rgia_mptn" : "Sub-região 1",
  "id_mcpo" : 3525854,
  "id_uf" : 35,
  "sgla_uf" : "SP",
  "id_rgia" : 3,
  "sgla_rgia" : "SE"
},
{
  "id_rgia_mptn" : "05301",
  "nome_rgia_mptn" : "Região Metropolitana de Sorocaba",
  "id_sub_rgia_mptn" : "0530101",
  "nome_sub_rgia_mptn" : "Sub-região 1",
  "id_mcpo" : 3551108,
  "id_uf" : 35,
  "sgla_uf" : "SP",
  "id_rgia" : 3,
  "sgla_rgia" : "SE"
},
{
  "id_rgia_mptn" : "05301",
  "nome_rgia_mptn" : "Região Metropolitana de Sorocaba",
  "id_sub_rgia_mptn" : "0530101",
  "nome_sub_rgia_mptn" : "Sub-região 1",
  "id_mcpo" : 3554003,
  "id_uf" : 35,
  "sgla_uf" : "SP",
  "id_rgia" : 3,
  "sgla_rgia" : "SE"
},
{
  "id_rgia_mptn" : "05301",
  "nome_rgia_mptn" : "Região Metropolitana de Sorocaba",
  "id_sub_rgia_mptn" : "0530101",
  "nome_sub_rgia_mptn" : "Sub-região 1",
  "id_mcpo" : 3554508,
  "id_uf" : 35,
  "sgla_uf" : "SP",
  "id_rgia" : 3,
  "sgla_rgia" : "SE"
},
{
  "id_rgia_mptn" : "05101",
  "nome_rgia_mptn" : "Região Metropolitana de Campinas",
  "id_sub_rgia_mptn" : "",
  "nome_sub_rgia_mptn" : "",
  "id_mcpo" : 3501608,
  "id_uf" : 35,
  "sgla_uf" : "SP",
  "id_rgia" : 3,
  "sgla_rgia" : "SE"
},
{
  "id_rgia_mptn" : "05101",
  "nome_rgia_mptn" : "Região Metropolitana de Campinas",
  "id_sub_rgia_mptn" : "",
  "nome_sub_rgia_mptn" : "",
  "id_mcpo" : 3503802,
  "id_uf" : 35,
  "sgla_uf" : "SP",
  "id_rgia" : 3,
  "sgla_rgia" : "SE"
}]]

我试着用这个震动,但没有得到预期的输出:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "id": "[&1].id_rgia_mptn",
        "nome": "[&1].nome_rgia_mptn",
        "sub-regioes-metropolitanas": {
          "*": {
            "id": "[&1].id_sub_rgia_mptn",
            "nome": "[&1].nome_sub_rgia_mptn",
            "municipios": {
              "*": {
                "id": "[&3].id_mcpo"
              }
            }
          }
        },
        "UF": {
          "id": "[&2].id_uf",
          "sigla": "[&2].sgla_uf",
          "regiao": {
            "id": "[&3].id_rgia",
            "sigla": "[&3].sgla_rgia"
          }
        }
      }
    }
  }
]

推荐答案

您应该添加更多的标识符来表示来自不同级别的各个数组的索引,以便在按不同的方式(othersMain)标记每个组后动态处理问题的同时进行更多分区,例如

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "&1.others.&_rgia_mptn",
        "municipios": {
          "*": {
            "id": "&3.Main[&1].&_mcpo"
          }
        },
        "sub-regioes-metropolitanas": {
          "*": {
            "*": "&1.others.&_sub_rgia_mptn",
            "municipios": {
              "*": {
                "id": "&3.Main[&1].id_mcpo"
              }
            }
          }
        },
        "UF": {
          "id": "&2.others.&_uf",
          "*i*": "&2.others.&(0,1)&(0,2)_uf",
          "*e*o": {
            "id": "&3.others.&_&(1,1)&(1,2)",
            "*i*": "&3.others.&(0,1)&(0,2)_&(1,1)&(1,2)"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "Main": {
          "*": {
            "@2,others": {
              "*": "&4_&2.&"
            }, // go two levels up the tree to grab the values of the "others" array
            "*": "&3_&1.&"
          }
        }
      }
    }
  },
  { // get rid of the object keys
    "operation": "shift",
    "spec": {
      "*": ""
    }
  }
]

Json相关问答推荐

使用SQL查询从SON中查找第n个密钥对值

在Jenkins中使用ReadJSON读取json子元素

Azure Data Factory JSON输出格式问题

419(未知状态)使用laravel处理PUT请求

交换键和数组值,将旧键转换为新数组值,使用 jq

Ansible - 将文件内容添加到字典中

Python 将 struct 化文本转换和筛选为对象

具有 (RegEx) 模式的 json-schema 中的枚举

如何从 json 中获取单个元素?

流导入错误:重新上传时不存在布局释放 UUID

使用 BASH 和 JQ 我想将 json 文件与 bash 数组进行比较

将哈希表转换为 json 后,Powershell 缺少数组

如何在 Django 的模板语言中获取 json 键和值?

获取json中某个键的索引

未捕获的类型错误:无法读取 null 的属性props

Python - 如何将 JSON 文件转换为数据框

在 Http Header 中使用 Json 字符串

关于使用 $ref 的 JSON 模式

是否可以将数据写入本地 json 文件,除了Angular 之外什么都没有?

log4j 支持 JSON 格式吗?