Jolt Transform JSON Spec para entrada de matriz
Aug 27 2020
Estoy tratando de hacer la operación de cambio JOLT con la especificación inferior que no funciona. No estoy seguro de qué error he cometido. Necesito ayuda en este caso. El JSON de salida viene como un objeto en lugar de Array y el cambio tampoco funciona como se esperaba.
Input : [
{
"Header": {
"Number": 1,
"Id": "JO"
},
"Name": "John"
},
{
"Header": {
"Number": 2,
"Id": "JS"
},
"Name": "Justin"
}
]
Spec : [
{
"operation": "shift",
"spec": {
"*": {
"Header": "Header",
"Name": "Header.Name"
}
}
}
]
Expected Output : [
{
"Header": {
"Number": 1,
"Id": "JO",
"Name": "John"
}
},
{
"Header": {
"Number": 2,
"Id": "JS",
"Name": "Justin"
}
}
]
Actual Output : {
"Header" : [ {
"Number" : 1,
"Id" : "JO",
"Name" : "John"
}, {
"Number" : 2,
"Id" : "JS"
} ]
}
Respuestas
1 kasptom Aug 27 2020 at 20:46
También debe especificar que el "Header"objeto está dentro de la matriz .
Además, el índice de la matriz donde coloca el "Header"objeto para cada uno de los elementos de la matriz.
Eso es lo que hace la siguiente especificación (usando el comodín -apmersand[&1] combinado con una matriz):
[
{
"operation": "shift",
"spec": {
"*": {
"Header": "[&1].Header",
"Name": "[&1].Header.Name"
}
}
}
]
Fuentes:
- Shiftr.java javadocs :
- las matrices
- El comodín ampersand
- Otra respuesta: "¿Cómo transformo una matriz usando Jolt?"
- Aplicación de demostración vinculada en el repositorio de Jolt para probar la especificación