我需要了解 JOLT 通配符并在此处执行正确的 JOLT

问题描述 投票:0回答:1

我有这个 JSON

{
  "found": true,
  "consultado": "00000000",
  "nome": "EMPRESA DE CNPJ 00000000 LTDA",
  "participacaoEmpresa": [
    {
      "cnpj": "44444444",
      "nome": "EMPRESA DE CNPJ 44444444 LTDA",
      "descricaoCargo": "Sócio"
    },
    {
      "cnpj": "123",
      "nome": "EMPRESA DE CNPJ 123 LTDA",
      "descricaoCargo": "Sócio123"
    }
  ]
}

我做了这个震动

[
  {
    "operation": "shift",
    "spec": {
      "consultado": "DOCT_SCIO",
      "nome": "NOME_SCIO",
      "participacaoEmpresa": {
        "*": {
          "cnpj": "CNPJ_PSSA_JUDC",
          "nome": "NOME_PSSA_JUDC",
          "descricaoCargo": "DCRC_CRGO"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*_PSSA*|DCRC_CRGO": {
        "*": {
          "@": "[&1].&2"
        }
      }
    }
  }
]

但是我有这个输出

[ {
  "DCRC_CRGO" : "Sócio",
  "CNPJ_PSSA_JUDC" : "44444444",
  "NOME_PSSA_JUDC" : "EMPRESA DE CNPJ 44444444 LTDA"
}, {
  "DCRC_CRGO" : "Sócio123",
  "CNPJ_PSSA_JUDC" : "123",
  "NOME_PSSA_JUDC" : "EMPRESA DE CNPJ 123 LTDA"
} ]

但是我需要这个

[ {
  "DOCT_SCIO": "00000000",
  "NOME_SCIO": "EMPRESA DE CNPJ 00000000 LTDA",
  "DCRC_CRGO" : "Sócio",
  "CNPJ_PSSA_JUDC" : "44444444",
  "NOME_PSSA_JUDC" : "EMPRESA DE CNPJ 44444444 LTDA"
}, {
  "DOCT_SCIO": "00000000",
  "NOME_SCIO": "EMPRESA DE CNPJ 00000000 LTDA",
  "DCRC_CRGO" : "Sócio123",
  "CNPJ_PSSA_JUDC" : "123",
  "NOME_PSSA_JUDC" : "EMPRESA DE CNPJ 123 LTDA"
} ]

我在这里做错了什么,需要改变吗?

如果您可以帮助我,请绕过或解释详细信息。

我无法理解我的错误,并且我尝试了很多代码来获得所需的输出。

JOLT 文档很混乱。

附在问题中

json wildcard jolt
1个回答
0
投票

需要将值

DOCT_SCIO
NOME_SCIO
从上两层传输到JSON的最里面部分,所以使用
@2,DOCT_SCIO
@2,NOME_SCIO
,如下例所示:

[
  {
    "operation": "shift",
    "spec": {
      "consultado": "DOCT_SCIO",
      "nome": "NOME_SCIO",
      "participacaoEmpresa": {
        "*": {
          "cnpj": "CNPJ_PSSA_JUDC",
          "nome": "NOME_PSSA_JUDC",
          "descricaoCargo": "DCRC_CRGO"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*_PSSA*|DCRC_CRGO": {
        "*": {
          "@2,DOCT_SCIO": "[&1].DOCT_SCIO",
          "@2,NOME_SCIO": "[&1].NOME_SCIO",
          "@": "[&1].&2"
        }
      }
    }
  },
  { // get rid of the repeated identical components to one per each element
    "operation": "cardinality",
    "spec": {
      "*": {
        "*": "ONE"
      }
    }
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.