2016-05-25 28 views
3

私はLinkedHashMapに州があります。JSONObjectでLinkedHashMapの順序を保持する方法は?

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

私はJSONObjectを作成しています。

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

ただし、エントリは順序付けられていません。 LinkedHashMapの注文をJSONObjectに保存したいと思います。どうすればこれを達成できますか?

+0

私はあなたの代わりにLinkedHashMapのTreeMapのを使うべきだと思うが、それはキーの値によって、あなたのマップをソートしますでしょうValueでソートしたいので、Comparatorを使う必要があります。キーの代わりに値でマップをソートするための参照リンクがいくつかあります。 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は順序付けられた値のシーケンスです。 あなたはマップの順序を保持したいのであれば、次の2つのキーを使用してjsonオブジェクトを作成することができます

  • 最初のキーがデータを呼び出すことができ、このようなあなたのstateMapデータを保持します:

    json.element('data', stateMap) 
    
  • 、第2の鍵は、キーを呼び出すことができ、それがこのようなあなたのマップキーの順序付きリストを保持しますJSONArray対象になります。

    詳細については
    JSONArray array = new JSONArray(); 
    array.addAll(stateMap.keySet()) 
    json.put('keys', array) 
    

関連する問題