2016-05-25 5 views
3

Ich habe eine LinkedHashMap mit Zuständen.Wie kann die LinkedHashMap-Sortierung in JSONObject beibehalten werden?

Map<String, String> stateMap = new LinkedHashMap<String, String>(); 
// ... 

Ich erstelle eine JSONObject basierend darauf.

Die Einträge erscheinen jedoch ungeordnet. Ich möchte die Bestellung von in JSONObject beibehalten. Wie kann ich das erreichen?

+0

Ich glaube, Sie TreeMap statt LinkedHashMap verwenden sollten, aber es wird Ihre Karte nach dem Wert der Key sortieren und Sie Willst du es nach Wert sortieren, musst du Komparator verwenden. Hier sind einige Referenzlinks zum Sortieren von Map nach Wert anstelle von Key. http://www.mkyong.com/java/how-to-sort-a-map-in-java/ http://www.programcreek.com/2013/03/java-sort-map-by-value/ – Darshit

Antwort

1

Im Gegensatz zu JSONObject ist JSONArray eine geordnete Folge von Werten. Also, wenn Sie die Reihenfolge Ihrer Karte erhalten wollen, können Sie Ihr json Objekt mit zwei Schlüsseln konstruieren:

  • Der erste Schlüssel kann aufgerufen werden Daten und Ihre stateMap Daten wie diese halten:

    json.element('data', stateMap) 
    
  • der zweite Schlüssel kann Tasten und es wird ein JSONArray Objekt aufgerufen werden, die die geordnete Liste Ihrer Mapkeys wie diese halten wird:

    JSONArray array = new JSONArray(); 
    array.addAll(stateMap.keySet()) 
    json.put('keys', array) 
    

Für weitere Informationen:

Verwandte Themen