2013-07-22 10 views
5

Ich verwende json-simple und möchte Pretty-Print für Debugging-Zwecke haben.JSON Pretty-Print ohne Änderung der Reihenfolge

Hier ist eine sehr relavant SO Frage: Pretty-Print JSON in Java

jedoch die Antwort im Thread gegeben, nicht nur die Vertiefung fixiert, sondern ändert auch die Reihenfolge der Elemente auf [a ... z] die Zeichenfolge, um mit der Schlüssel.

Gibt es eine Möglichkeit, den Einzug zu korrigieren, ohne die Reihenfolge der Elemente in meinem JSONObject zu ändern?

Beispiel:

JSONObject myJSon = new JSONObject(); 
myJSon.put("zzz", 1); 
myJSon.put("aaa", 1); 

Gson gson = new GsonBuilder().setPrettyPrinting().create(); 
System.out.println(gson.toJson(myJSon)); 

Ausgang:

{ 
    "aaa": 1, 
    "zzz": 1 
} 

gewünschte Ausgabe:

{ 
    "zzz": 1, 
    "aaa": 1 
} 

Edit: Ich verwende: org.json.simple.JSONObject

+0

Sehen Sie, wenn diese Ihnen helfen können: http://stackoverflow.com/questions/6541757/when-using-spring-mvc-for-rest-how-do-you- enable-jackson-to-pretty-print-render/6541956 # 6541956 –

+0

@ carl-lopez Was hat Jackson mit Gson zu tun? –

+0

Kann ersetzt werden mit, wie Sie denken könnten –

Antwort

0

Nr. JSONObject ist ein HashMap, es gibt keine Reihenfolge der Einträge, die Sie put darin eingeben.

7

Klasse erweitert java.util.HashMap und dies ist der Grund, warum Sie diese Reihenfolge der Eigenschaften auf Ausgabe sehen. setPrettyPrinting() Methode ändert nicht die Reihenfolge. Sie können es aus dem Quellcode entfernen und nichts ändern. Wenn Sie die Bestellung behalten möchten, können Sie java.util.LinkedHashMap anstelle von verwenden.

Einfaches Beispiel:

import java.util.LinkedHashMap; 
import java.util.Map; 

import com.google.gson.Gson; 
import com.google.gson.GsonBuilder; 

public class GsonProgram { 

    public static void main(String[] args) throws Exception { 
     Map<String, Integer> myJSon = new LinkedHashMap<String, Integer>(); 
     myJSon.put("zzz", 1); 
     myJSon.put("aaa", 1); 

     Gson gson = new GsonBuilder().setPrettyPrinting().create(); 
     System.out.println(gson.toJson(myJSon)); 
    } 
} 
+0

Ich habe Probleme um den Quellcode von simple-json mit Maven herunterzuladen und zu bearbeiten. Jede weitere Lektüre? – Sait

+0

Warum möchten Sie die Bibliothek ändern? Dies ist keine Lösung. Warum möchten Sie Ihren Quellcode nicht ändern? Können Sie uns Ihren echten Quellcode zeigen? –

+0

Mein Quellcode hat nichts Besonderes. Nur viele JJSONArrays und SONObjects innerhalb anderer JSONObjects. Deshalb habe ich darüber nachgedacht, die Bibliothek zu wechseln. Was Sie meinen, indem Sie sagen: Das ist keine Lösung. Ich dachte, das Ändern von "HashMap" zu "LinkedHashMap" in der ursprünglichen Implementierung von 'simple-json' würde das Problem lösen. Meinst du, es ist keine Best Practice oder meinst du es geht überhaupt nicht? – Sait

Verwandte Themen