2016-08-10 3 views
0

Ich kann nicht in der DataWeave-Dokumentation sehen, wenn es die Reihenfolge der Eigenschaften behält. Zum Beispiel nach diesem Code:Wird in DataWeave die Reihenfolge der JSON-Eigenschaften beibehalten?

%dw 1.0 
%output application/json 
--- 
{ 
    giftcards : payload map { 
     "currency" : $.currency, 
     "giftcardId" : $."_id", 
     "amount" : $.price 
    } 
} 

Können wir erwarten, dass wir die folgende Reihenfolge der Eigenschaften in der Antwort erhalten:

  1. Währung
  2. giftcardId
  3. Menge

Antwort

1

Kurze Antwort ist "Ja", aber allgemeine Antwort ist "Nein". Sogar Mule sollte JSON exakt wie in DateWeave definiert produzieren, es bedeutet nicht, dass andere Transformationen diese Reihenfolge nicht zerstören. Die einfache Umwandlung in Map und zurück ändert sie basierend auf einer bestimmten Map-Implementierung. Es könnte Hashtable oder geordnete Sammlung sein, um Schlüssel/Wert-Paare zu behalten, und so wird die Bestellung natürlich gebrochen.

Bottom line - da Sie nicht wissen, was Transformationen Daten haben werden - verlassen Sie sich nicht auf die Reihenfolge in der ursprünglichen oder einer mittleren Stufe. Kontrolliere es immer selbst. Zum Beispiel - Schlüssel alphabetisch bestellen, wenn er aus der Sammlung extrahiert wird.

+0

Ich nehme an, dass Sie Recht haben. Dies ist die Antwort, die ich von Mule selbst erhalten habe: "Die im Körper definierte Reihenfolge wird höchstwahrscheinlich für XML und JSON respektiert werden. In Java sind die Karten ungeordnet." Also, ich nehme an, deine Antwort ist der Realität am nächsten. Es ist nicht 100% garantiert, denke ich. –

0

Es wird die Reihenfolge Ihrer Daten beibehalten. weil die gesamte Deklaration unter "Datenbindung" unter "Ausgabedirektiven" fällt. Die Output-Direktive gibt an, um welchen Ausgabetyp es sich bei einer Transformation handelt, die mit content/type angegeben wird. Es kann nur eine Ausgabe angegeben werden, die Struktur dieser Ausgabe wird dann im DataWeave-Rumpf definiert.

+0

Vielen Dank für Ihre Antwort! Mule gab mir jedoch nicht genau diese Antwort (bitte überprüfen Sie meinen Kommentar zu der vorherigen Antwort). Die Antwort von Mule lässt mich jedoch Zweifel offen. –

Verwandte Themen