2016-05-25 172 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) 
    

欲了解更多信息:

相关问题