2016-05-25 174 views
3

我有一個LinkedHashMap狀態。如何保留JSONObject中的LinkedHashMap排序?

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

我正在創建基於它的JSONObject

JSONObject json = new JSONObject(); 
json.putAll(stateMap); 

但是,條目顯示無序。我想保留JSONObjectLinkedHashMap的排列順序。我怎樣才能做到這一點?

+0

我認爲你應該使用樹形圖來代替LinkedHashMap的,但它會通過鑰匙後,您的價值排序地圖想要按值排序,所以你必須使用比較器。這裏有一些參考鏈接,用於按照值而不是按鍵對圖進行排序。 http://www.mkyong.com/java/how-to-sort-a-map-in-java/ http://www.programcreek.com/2013/03/java-sort-map-by-value/ – Darshit

回答

1

不像JSONObject,JSONArray是一個有序的值序列。 所以,如果你想保留您的映射的順序,你可以用兩個鍵構造您json對象:

  • 第一把鑰匙可以稱爲數據將舉行您stateMap的數據是這樣的:

    json.element('data', stateMap) 
    
  • 第二密鑰可以被稱爲,這將是一個JSONArray對象將舉行地圖鍵的有序列表如下:

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

欲瞭解更多信息:

相關問題