Метод put в объекте json добавляет значение первому объекту json; - PullRequest
3 голосов
/ 12 ноября 2010

Рассмотрим следующий фрагмент кода:

JSONObject json = new JSONObject(); 

json.put("one", 1); 

json.put("two", 2); 

json.put("three", 3);

Если я распечатываю jsonobject, он печатает вот так

{"three":"1","two":"2","one":"1"}

Но я хочу вот так.

{"one":"1","two":"2","three":"3"}

Пожалуйста, помогите. Заранее спасибо.

1 Ответ

10 голосов
/ 12 ноября 2010

Документация в http://www.json.org/javadoc/org/json/JSONObject.html гласит:

JSONObject - это неупорядоченный набор пар имя / значение.

Другими словами, свойствадоступ к объекту осуществляется по имени, а не по позиции, и сериализованная форма по умолчанию не гарантирует какого-либо определенного порядка.

Строгое позиционирование происходит только с массивами:

JSONArray json = new JSONArray();

json.put("1");
json.put("2");
json.put("3");

json.toString(); // results in ["1", "2", "3"]

Самый простой обходной путьЧтобы решить вашу проблему, используйте метод sortedKeys () и, повторяя ключ JSONObject по ключу, создайте строку JSON вручную в любом необходимом порядке.Также может помочь реализация собственного Comparator .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...