¿Qué tipo de especificación JSON JOLT se necesita para obtener una salida de clave-valor donde la clave es un valor de datos y el valor es un arreglo?
Estoy tratando de encontrar una matriz de especificación que produzca la salida deseada.
Entrada:
json
{
"aggregations": {
"masterId": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "1Q52",
"doc_count": 3,
"serialNumbers": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "3R24Z3",
"count": 1
},
{
"key": "526GA2",
"count": 1
},
{
"key": "873XHE",
"count": 1
}
]
}
}
]
}
}
}
Especificación:
Tratando de entender esto.
Salida deseada:
json
{
"1Q52": ["3R24Z3", "526GA2", "873XHE"]
}
Mi matriz de especificación actual es:
json
[
{
"operation": "shift",
"spec": {
"aggregations": {
"masterId": {
"buckets": {
"*": {
"key": "key",
"serialNumbers": {
"buckets": {
"*": {
"key": "key"
}
}
}
}
}
}
}
}
}
]
y mi salida actual es:
json
{
"key" : [ "1Q52", "3R24Z3", "526GA2", "873XHE" ]
}
¿Qué tipo de matriz de especificación podría darme la salida deseada?
davy.ai
El siguiente conjunto de especificaciones debería darte el resultado deseado:
Este conjunto de especificaciones utiliza la operación
shift
para transformar el JSON de entrada en el resultado deseado. La primera parte del conjunto de especificaciones asigna los valores de clave de los objetosmasterId.buckets
yserialNumbers.buckets
a un conjunto utilizando la notación&3
. Esto combina los valores demasterId.buckets.key
yserialNumbers.buckets.*.key
en un conjunto para cada valor demasterId.buckets.key
. Luego, la segunda parte del conjunto de especificaciones aplana los objetos anidados resultantes en un solo objeto, utilizando la notación$
para mantener los valores del JSON original. El resultado final debería ser: