Как задать имя JSONObject

есть код

  JSONObject jsonObject = new JSONObject();
                try {
                    jsonObject.put("id", "1");
                    jsonObject.put("qty", "1");
                } catch (JSONException e) {
                    e.printStackTrace();
                }

он выводит

{
"id" : 1,
"qty" : 1
}

а нужно получить вывод

{"list": [{
"id" : 2,
"qty" : 11
}]}

как это реализовать?


Ответы (1 шт):

Автор решения: Михаил Ребров

Как задать имя?

Вы его задаете когда кладете что-то в JSONObject

jsonObject.put("id", "1");

Вот сейчас вы "задали имя" полю id
Абсолютно также вы задаёте имена всем остальным полям.
Если нужно - вкладываете одни JSONObject в другие и даете нужные имена полям

Как получить то что на примере?

все просто:

  • создайте еще один корневой элемент
  • создайте JSONArray в котором будет храниться список объектов
  • положите этот JSONArray в корневой элемент
  • а в JSONArray добавьте элемент созданный ранее

рабочий пример:

try {
    // создаем корневой элемент
    JSONObject rootJson = new JSONObject();
    // создаем массив json объектов
    JSONArray listJson = new JSONArray();
    // создаем элемент списка
    JSONObject itemObject = new JSONObject();

    // заполняем элемент списка
    itemObject.put("id", 2);
    itemObject.put("qty", 11);

    // кладем его в JSONArray
    listJson.put(itemObject);
    // который в свою очередь кладем в корневой элемент в поле list
    rootJson.put("list", listJson);

    // приводим к строке и выводим
    System.out.println(rootJson.toString());

} catch (JSONException e) {
    e.printStackTrace();
}

output

{"list":[{"qty":11,"id":2}]}
→ Ссылка