Jolt Transform specifica JSON per l'input dell'array

Aug 27 2020

Sto cercando di eseguire l'operazione di turno JOLT con le specifiche inferiori che non funzionano. Non sono sicuro di quale errore ho fatto. Hai bisogno di aiuto in questo caso. L'output JSON arriva come oggetto anziché Array e anche shift non funziona come previsto.

    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"
      } ]
    }

Risposte

1 kasptom Aug 27 2020 at 20:46

Devi anche specificare che l' "Header"oggetto è all'interno dell'array .

Inoltre, l'indice dell'array in cui si posiziona l' "Header"oggetto per ciascuno degli elementi dell'array.

Ecco cosa fanno le specifiche seguenti (usando il carattere jolly [&1]- apmersand combinato con l'array):

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "Header": "[&1].Header",
        "Name": "[&1].Header.Name"
      }
    }
  }
]

Fonti:

  1. Shiftr.java javadocs :
    • Gli array
    • Il carattere jolly e commerciale
  2. Altra risposta: "Come posso trasformare un array usando Jolt?"
  3. Applicazione demo collegata nel repository jolt per testare le specifiche