Good Evening..
I have a JSON with this values:
[
{
"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"
}
]
My jolt transform actually:
[
{
"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": ""
}
}
]
The output:
{
"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"
}
The information at the column:
"motoristas" : [ {
"documento" : "18407854620",
"nome" : "JORGE LUIS MASSEI",
I need this "documento"
and "nome"
only one time in this array motoristas
.
What I need to send only one time in this jolt?
Thanks.
You might suffix motoristas[#2]
with [0]
as motoristas[#2][0]
in shift spec in order to keep the square brackets after adding "motoristas": "ONE"
to the cardinality spec.
So the first two specs will be
{
"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"
}
}
}
Alternatively, you might shorten the cardinality spec by adding "documentos": "MANY"
while representing the non-object pairs by "*": "ONE"
such as
{
"operation": "cardinality",
"spec": {
"*": "ONE",
"documentos": "MANY",
"destinatario": {
"cnpj": "ONE"
},
"remetente": {
"cnpj": "ONE"
},
"transportadora": {
"cnpj": "ONE"
}
}
}