json Nifi -使用震动提取列表

xriantvc  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(93)

我有一个JSON数组'itens':
obs:我需要在执行转换时获取这个数组。

{
  "PreNotaFiscal": {
    "numero": "19646801",
    "serie": "1",
    "observacao": "C5_LVMENSR:REF.PROPOSTA 589112 PEDIDO 034792 - 008|C5_MENNOTA:REF.PROPOSTA 589112 PEDIDO 034792 - 008 PRODUTO IMPORTADO SOB REGIME DE DIFERIMENTO, DEC. N 4.316/95.  |C5_LVMENSR:REF.PROPOSTA 589112 PEDIDO 034792 - 008|C5_LVLOGIS:LOCAL DA COLETA SALVADOR: TOPLOG ARMAZENAGEM - VIA URBANA, KM 01 S/N - CIA SUL - SIMOES FILHO/BA - CEP:43700-000",
    "modalidadeFrete": 0,
    "naturezaOperacao": "",
    "canalDistribuicao": "",
    "tipoOperacao": 1,
    "dataEmissao": "20220513",
    "peso": 4.3,
    "pesoLiquido": 4.3,
    "pesoCubado": 0,
    "cubagem": 0.017,
    "volumes": 1,
    "quantidadeItens": 0,
    "valor": 10229.86,
    "valorProdutos": 10229.86,
    "codigoProduto": "1",
    "cnpjUnidade": "",
    "prazoCliente": ""
  },
  "emitente": {
    "cnpj": "05917486000140",
    "nome": "LIVETECH DA BAHIA INDUSTRIA E COM. S.A",
    "fantasia": "LIVETECH DA BAHIA INDUSTRIA E COM. S.A",
    "inscricaoEstadual": "63250303",
    "logradouro": "RODOVIA BA 262 - POLO DE INFORMATICA DE ILHEUS",
    "bairro": "IGUAPE",
    "codigoMunicipio": "2913606",
    "cep": "45658335",
    "fone": "(73) 3222-5250"
  },
  "destinatario": {
    "cnpj": "09356818000116",
    "nome": "INTERNET PLAY LTDA",
    "fantasia": "NETPLAY",
    "inscricaoEstadual": "177269246112",
    "email": "financeiro@netplay.net.br",
    "bairro": "JARDIM PLANALTO",
    "estado": "SP",
    "codigoMunicipio": "02804",
    "cep": "16072340",
    "fone": "(18) 3117-7434"
  },
  "itens": [
    {
      "produto": "1000196100663",
      "nomeProduto": "XA1DTCHUS - XGS 136 Dispositivo de seguran�a - cabo de alime",
      "cubagem": 0.017,
      "quantidade": 1,
      "volumes": 1,
      "valor": 9321.06,
      "codigoClassificacaoProduto": "100"
    }
  ],
  "volumes": [
    {
      "item": "01",
      "quantidade": 1,
      "altura": 0.15,
      "largura": 0.28,
      "comprimento": 0.41,
      "volume": 0.017,
      "pesoPorVolume": 4.3,
      "pesoTotal": 4.3,
      "tipoVolume": "PCT 08"
    }
  ]
}

我变身:

[
  {
    "operation": "shift",
    "spec": {
      "PreNotaFiscal": {
        "numero": "numero",
        "serie": "serie",
        "observacao": "observacao",
        "modalidadeFrete": "modalidadeFrete",
        "naturezaOperacao": "naturezaOperacao",
        "canalDistribuicao": "canalDistribuicao",
        "tipoOperacao": "tipoOperacao",
        "dataEmissao": "dataEmissao",
        "peso": "peso",
        "pesoLiquido": "pesoLiquido",
        "pesoCubado": "pesoCubado",
        "cubagem": "cubagem",
        "volumes": "volumes",
        "quantidadeItens": "quantidadeItens",
        "valor": "valor",
        "valorProdutos": "valorProdutos",
        "codigoProduto": "codigoProduto",
        "prazoCliente": "prazoCliente"
      },
      "emitente": {
        "cnpj": "emitente.cnpj",
        "nome": "emitente.nome",
        "fantasia": "emitente.fantasia",
        "inscricaoEstadual": "emitente.inscricaoEstadual",
        "logradouro": "emitente.logradouro",
        "bairro": "emitente.bairro",
        "codigoMunicipio": "emitente.codigoMunicipio",
        "cep": "emitente.cep",
        "fone": "emitente.fone"
      },
      "destinatario": {
        "cnpj": "destinatario.cnpj",
        "nome": "destinatario.nome",
        "fantasia": "destinatario.fantasia",
        "inscricaoEstadual": "destinatario.inscricaoEstadual",
        "email": "destinatario.email",
        "bairro": "destinatario.bairro",
        "codigoMunicipio": "destinatario.codigoMunicipio",
        "cep": "destinatario.cep",
        "fone": "destinatario.fone"
      }
    }
  },

  {
    "operation": "default",
    "spec": {
      "cnpjUnidade": "${cnpjEmissor:unescapeJson()}"
    }
  }
]

但我需要带来的价值观和数组的“itens”,例如:

{
  "numero" : "19646801",
  "serie" : "1",
  "observacao" : "C5_LVMENSR:REF.PROPOSTA 589112 PEDIDO 034792 - 008|C5_MENNOTA:REF.PROPOSTA 589112 PEDIDO 034792 - 008 PRODUTO IMPORTADO SOB REGIME DE DIFERIMENTO, DEC. N 4.316/95.  |C5_LVMENSR:REF.PROPOSTA 589112 PEDIDO 034792 - 008|C5_LVLOGIS:LOCAL DA COLETA SALVADOR: TOPLOG ARMAZENAGEM - VIA URBANA, KM 01 S/N - CIA SUL - SIMOES FILHO/BA - CEP:43700-000",
  "modalidadeFrete" : 0,
  "naturezaOperacao" : "",
  "canalDistribuicao" : "",
  "tipoOperacao" : 1,
  "dataEmissao" : "20220513",
  "peso" : 4.3,
  "pesoLiquido" : 4.3,
  "pesoCubado" : 0,
  "cubagem" : 0.017,
  "volumes" : 1,
  "quantidadeItens" : 0,
  "valor" : 10229.86,
  "valorProdutos" : 10229.86,
  "codigoProduto" : "1",
  "prazoCliente" : "",
  "emitente" : {
    "cnpj" : "05917486000140",
    "nome" : "LIVETECH DA BAHIA INDUSTRIA E COM. S.A",
    "fantasia" : "LIVETECH DA BAHIA INDUSTRIA E COM. S.A",
    "inscricaoEstadual" : "63250303",
    "logradouro" : "RODOVIA BA 262 - POLO DE INFORMATICA DE ILHEUS",
    "bairro" : "IGUAPE",
    "codigoMunicipio" : "2913606",
    "cep" : "45658335",
    "fone" : "(73) 3222-5250"
  },
  "destinatario" : {
    "cnpj" : "09356818000116",
    "nome" : "INTERNET PLAY LTDA",
    "fantasia" : "NETPLAY",
    "inscricaoEstadual" : "177269246112",
    "email" : "financeiro@netplay.net.br",
    "bairro" : "JARDIM PLANALTO",
    "codigoMunicipio" : "02804",
    "cep" : "16072340",
    "fone" : "(18) 3117-7434"
  },
  "cnpjUnidade" : "${cnpjEmissor:unescapeJson()}",
    "itens": [
    {
      "produto": "1000196100663",
      "nomeProduto": "XA1DTCHUS - XGS 136 Dispositivo de seguran�a - cabo de alime",
      "cubagem": 0.017,
      "quantidade": 1,
      "volumes": 1,
      "valor": 9321.06
    }
}

如果有更多的项目,它们将一起插入。
示例:

{
  "Itens": [
    {
      "produto": "1000196100663",
      "nomeProduto": "XA1DTCHUS - XGS 136 Dispositivo de seguran�a - cabo de alime",
      "cubagem": 0.017,
      "quantidade": 1,
      "volumes": 1,
      "valor": 9321.06
    },
    {
      "produto": "1000196100663",
      "nomeProduto": "XA1DTCHUS - XGS 136 Dispositivo de seguran�a - cabo de alime",
      "cubagem": 0.017,
      "quantidade": 1,
      "volumes": 1,
      "valor": 9321.06
    }
  ]
}

现在我详细介绍了整个JSON。有人能帮助我吗?

hfwmuf9z

hfwmuf9z1#

不需要重写所有子属性,只需要将主节点放在一个shift转换规范中,然后移除多余的节点,默认所需的节点,如

[
  {
    "operation": "shift",
    "spec": {
      "@PreNotaFiscal": "", // bring the object except the key
      "emitente": "&", // replicate all listed object as a whole
      "destinatario": "&",
      "Itens": "&"
    }
  },
  {
    "operation": "remove",
    "spec": {
      "itens": {
        "*": {
          "codigoClas*": ""
        }
      },
      "cnpjUn*": ""
    }
  },
  {
    "operation": "default",
    "spec": {
      "cnpjUnidade": "${cnpjEmissor:unescapeJson()}"
    }
  }
]

其中可以如在当前情况下那样使用文字codigoClassificacaoProduto的适当缩写,诸如codigoClas,沿着替换通配符*****。

相关问题