晚上好

我有一个具有以下值的JSON:

[
  {
    "oid_notas": 12750,
    "unidade": "BRYE",
    "nota_fiscal": "182477",
    "serie_nota_fiscal": null,
    "nota_fiscal_interno": null,
    "data_nota": null,
    "embarque": "64167625",
    "cep_origem": "37640000",
    "cep_destino": "36092005",
    "cnpj_transportadora": "34334442000196",
    "cnpj_destinatario": "17745613000150",
    "cnpj_unidade": "13143802000879",
    "placa": "EDP3H17",
    "data_inicio": "2023-12-18",
    "hora_inicio": "16:39:42",
    "data_fim": "2023-12-20",
    "hora_fim": "04:26:20",
    "chave_acesso": "31231213143802000879550010001824771354201333",
    "nome_motorista": "JORGE LUIS MASSEI",
    "cpf_motorista": "18407854620"
  },
  {
    "oid_notas": 12751,
    "unidade": "BRYE",
    "nota_fiscal": "182472",
    "serie_nota_fiscal": null,
    "nota_fiscal_interno": null,
    "data_nota": null,
    "embarque": "64167625",
    "cep_origem": "37640000",
    "cep_destino": "36092005",
    "cnpj_transportadora": "34334442000196",
    "cnpj_destinatario": "17745613000150",
    "cnpj_unidade": "13143802000879",
    "placa": "EDP3H17",
    "data_inicio": "2023-12-18",
    "hora_inicio": "16:39:42",
    "data_fim": "2023-12-20",
    "hora_fim": "04:26:20",
    "chave_acesso": "31231213143802000879550010001824721154911322",
    "nome_motorista": "JORGE LUIS MASSEI",
    "cpf_motorista": "18407854620"
  }
]

实际上,我的Jolt变换:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "cnpj_unidade": ["cnpjUnidade", "documentos[#2].cnpjEmissor", "remetente.cnpj"],
        "embarque": "numeroEmbarque",
        "cep_origem": "cepOrigem",
        "cep_destino": "cepDestino",
        "placa": "placa",
        "data_inicio": "data_inicio",
        "hora_inicio": "hora_inicio",
        "data_fim": "data_fim",
        "hora_fim": "hora_fim",
        "cnpj_destinatario": "destinatario.cnpj",
        "cnpj_transportadora": "transportadora.cnpj",
        "chave_acesso": "documentos[#2].chaveAcesso",
        "cpf_motorista": "motoristas[#2].documento",
        "nome_motorista": "motoristas[#2].nome"
      }
    }
  },
  {
    "operation": "cardinality",
    "spec": {
      "cnpjUnidade": "ONE",
      "numeroEmbarque": "ONE",
      "cepOrigem": "ONE",
      "cepDestino": "ONE",
      "data_inicio": "ONE",
      "hora_inicio": "ONE",
      "data_fim": "ONE",
      "hora_fim": "ONE",
      "placa": "ONE",
      "destinatario": {
        "cnpj": "ONE"
      },
      "remetente": {
        "cnpj": "ONE"
      },
      "transportadora": {
        "cnpj": "ONE"
      }
   }
 },
 {
    "operation": "default",
    "spec": {
      "calcularcarga": false,
      "documentos[]": {
        "*": {
          "tipoDocumento": 0
        }
      },
      "motoristas[]": {
        "*": {
          "tipoDocumento": 1
        }
      }
    }
 },
 {
    "operation": "modify-overwrite-beta",
    "spec": {
      "dataEmbarque": "=concat(@(1,data_inicio),' ',@(1,hora_inicio))",
      "dataEmissao": "=concat(@(1,data_inicio),' ',@(1,hora_inicio))",
      "dataPrevisaoFimEmbarque": "=concat(@(1,data_fim),' ',@(1,hora_fim))"
    }
 },
 {
    "operation": "remove",
    "spec": {
      "data_inicio": "",
      "hora_inicio": "",
      "data_fim": "",
      "hora_fim": ""
    }
 }
]

输出:

{
  "cnpjUnidade": "13143802000879",
  "documentos": [
    {
      "cnpjEmissor": "13143802000879",
      "chaveAcesso": "31231213143802000879550010001824771354201333",
      "tipoDocumento": 0
    },
    {
      "cnpjEmissor": "13143802000879",
      "chaveAcesso": "31231213143802000879550010001824721154911322",
      "tipoDocumento": 0
    }
  ],
  "remetente": {
    "cnpj": "13143802000879"
  },
  "numeroEmbarque": "64167625",
  "cepOrigem": "37640000",
  "cepDestino": "36092005",
  "placa": "EDP3H17",
  "destinatario": {
    "cnpj": "17745613000150"
  },
  "transportadora": {
    "cnpj": "34334442000196"
  },
  "motoristas": [
    {
      "documento": "18407854620",
      "nome": "JORGE LUIS MASSEI",
      "tipoDocumento": 1
    },
    {
      "documento": "18407854620",
      "nome": "JORGE LUIS MASSEI",
      "tipoDocumento": 1
    }
  ],
  "calcularcarga": false,
  "dataEmbarque": "2023-12-18 16:39:42",
  "dataEmissao": "2023-12-18 16:39:42",
  "dataPrevisaoFimEmbarque": "2023-12-20 04:26:20"
}

栏中的信息:

"motoristas" : [ {
    "documento" : "18407854620",
    "nome" : "JORGE LUIS MASSEI",

我需要这个array-motoristas中的这个"documento""nome"-103.

在这次颠簸中,我只需要发送一次什么?

谢谢.

推荐答案

shift等级库中,您可以在100后缀101作为102,以便在cardinality等级库中添加103后保留方括号.

所以前两个规格将是

  {
    "operation": "shift",
    "spec": {
      "*": {
        "cnpj_unidade": ["cnpjUnidade", "documentos[#2].cnpjEmissor", "remetente.cnpj"],
        "embarque": "numeroEmbarque",
        "cep_origem": "cepOrigem",
        "cep_destino": "cepDestino",
        "placa|*_inicio|*_fim": "&",
        "cnpj_destinatario": "destinatario.cnpj",
        "cnpj_transportadora": "transportadora.cnpj",
        "chave_acesso": "documentos[#2].chaveAcesso",
        "cpf_motorista": "motoristas[#2][0].documento",
        "nome_motorista": "motoristas[#2][0].nome"
      }
    }
  },
  {
    "operation": "cardinality",
    "spec": {
      "motoristas": "ONE",
      "cnpjUnidade": "ONE",
      "numeroEmbarque": "ONE",
      "cepOrigem": "ONE",
      "cepDestino": "ONE",
      "data_inicio": "ONE",
      "hora_inicio": "ONE",
      "data_fim": "ONE",
      "hora_fim": "ONE",
      "placa": "ONE",
      "destinatario": {
        "cnpj": "ONE"
      },
      "remetente": {
        "cnpj": "ONE"
      },
      "transportadora": {
        "cnpj": "ONE"
      }
    }
  }

或者,您可以通过添加"documentos": "MANY"来缩短基数规范,同时用"*": "ONE"表示非对象对,例如

  {
    "operation": "cardinality",
    "spec": {
      "*": "ONE",
      "documentos": "MANY",
      "destinatario": {
        "cnpj": "ONE"
      },
      "remetente": {
        "cnpj": "ONE"
      },
      "transportadora": {
        "cnpj": "ONE"
      }
    }
  }

Json相关问答推荐

Google Page to JSON应用程序脚本出现CORS错误

Vega Lite中的图例对齐

使用Jolt v.0.1.1向每个json元素添加一个键-值对

如何在Vega中使标记的符号在鼠标指针悬停时可点击

无法从JSON解析ZonedDateTime,但可以使用格式化程序很好地解析

织女星-没有循环的动画条形图第二部分(实际上是织女星)

JOLT转换以根据条件删除json对象

当列为空时从 SQL 获取 JSON

Bicep脚本中如何设置弹性池的维护窗口?

JOLT JSON 将值从一对多转换为一对一

如果 jq 数组中的字符串是对象或字符串,则获取值

向 JSON 文件添加注释

如何删除 django jsonfield 中的特定项目

如何解决名为 null 的map值

使用基本身份验证通过 CURL 发布 JSON

如何从Typescript 中的json响应中获取日期对象

将字符串映射到json对象的多种类型?

在 JSON.stringify() 的输出中隐藏空值

MySQL Select JSON 字段属性具有值的位置

字符串格式 JSON 字符串给出 KeyError