2016-08-09 2 views
0

Ich kann in der Dokumentation über JsonOutput.toJson nicht sehen, wenn es die Reihenfolge der Eigenschaften behält, die wir senden. Zum Beispiel den folgenden Code:Hält JsonOutput.toJson in groovy die Reihenfolge der Eigenschaften?

jsonResponse = JsonOutput.toJson([ 
    memberId:memberId, 
    emailAddress: emailAddress 
]) 

Kann verlassen wir uns auf, dass wir immer eine Antwort erhalten, wo „MemberID“ erste sein wird?

+2

Die JSON-Spezifikation sagt, dass die Bestellung nicht garantiert ist http://StackOverflow.com/Questions/5525795/does-Javascript-Guarantee-Objekt-Eigenschaft-order alles, was eine garantierte Bestellung erfordert, ist durch Design gebrochen –

+0

Ich bin total Beachten Sie, was die JSON-Spezifikation sagt. Deshalb setze ich diese Frage in Beziehung speziell zu Groovy JsonOutput –

+0

bestenfalls könnte es nur die Reihenfolge der eingehenden Datenstruktur (LinkedHashMap in diesem Fall) und da das Zielformat nicht Ordnung hat, verlassen Sie sich auf eine Implementierung Detail . – cfrick

Antwort

1

Ich glaube, die Bestellung ist nicht garantiert.

Here is the source-code für groovy.json.JsonOutput in Groovy 2.4.4. Von diesem Code ruft die Methode toJson(Map m)writeMap(Map<?, ?> map, CharBuf buffer) auf, die über die Einträge der Map iteriert. Dies ist wahrscheinlich die Stelle, an der die Bestellung verloren gehen könnte.

+0

Danke, Michael. Ich habe gestern die Quelle gesehen, aber ich hatte auch keine Zeit, sie zu posten. Obwohl wir die gleiche Reihenfolge erhalten, stimme ich zu, dass es nicht zuverlässig und nicht garantiert ist. –

Verwandte Themen