es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El siguiente conjunto de especificaciones debería darte el resultado deseado:

    [
      {
        "operación": "shift",
        "especificaciones": {
          "agregaciones": {
            "masterId": {
              "buckets": {
                "*": {
                  "key": "&",
                  "serialNumbers": {
                    "buckets": {
                      "*": {
                        "key": {
                          "@(2,key)": "[&3].@(1,key)"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      {
        "operación": "shift",
        "especificaciones": {
          "*": {
            "*": {
              "$": "&"
            }
          }
        }
      }
    ]
    

    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 objetos masterId.buckets y serialNumbers.buckets a un conjunto utilizando la notación &3. Esto combina los valores de masterId.buckets.key y serialNumbers.buckets.*.key en un conjunto para cada valor de masterId.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:

    {
      "1Q52": ["3R24Z3", "526GA2", "873XHE"]
    }
    

Comments are closed.