2016-05-25 2 views
3

У меня есть LinkedHashMap с состояниями.Как сохранить привязку LinkedHashMap в JSONObject?

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

Я создаю JSONObject на его основе.

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

Однако записи выглядят неупорядоченными. Я хотел бы сохранить заказ LinkedHashMap в JSONObject. Как я могу это достичь?

+0

Я думаю, вы должны использовать TreeMap вместо LinkedHashMap но сортирует вашу карту по значению ключа и вы хотите отсортировать его по значению, чтобы использовать 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 - упорядоченная последовательность значений. Так что, если вы хотите, чтобы сохранить порядок на вашей карте, вы можете построить свой json объект с двумя ключами:

  • Первый ключ можно назвать данные и будут содержать данные stateMap так:

    json.element('data', stateMap) 
    
  • Второй ключ можно назвать ключи и это будет объект JSONArray который будет держать упорядоченный список ключей карты, как это:

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

Для получения дополнительной информации:

Смежные вопросы