Вопрос:

Создание вложенного JSON в цикле

java json

29 просмотра

2 ответа

462 Репутация автора

Я пытаюсь построить объект JSON следующего типа

[
  {"Value":0,"Cities":["London","Tokyo","Washington"],"Name":"John"},
  {"Value":1,"Cities":["London","Tokyo","Washington"],"Name":"John"},
  {"Value":2,"Cities":["London","Tokyo","Washington"],"Name":"John"}
]

Это то, что я сделал до сих пор. Объект JSON записывается с последней записью.

   JSONArray outer = new JSONArray();
        JSONObject js = new JSONObject();
        List<String> str = new ArrayList<String>();
        str.add("London");
        str.add("Tokyo");
        str.add("Washington");

        int res = 3;


        for(int i=0;i<res;i++){
            js.put("Value", i);
            js.put("Name", "John");
            js.put("Cities", str);
            outer.add(js);          
        }           
        System.out.println(outer);

Что я получаю сейчас:

  [
    {"Value":2,"Cities":["London","Tokyo","Washington"],"Name":"John"},
    {"Value":2,"Cities":["London","Tokyo","Washington"],"Name":"John"},
    {"Value":2,"Cities":["London","Tokyo","Washington"],"Name":"John"}
  ]
Автор: Betafish Источник Размещён: 11.04.2017 04:48

Ответы (2)


2 плюса

3465 Репутация автора

Создайте новый JSONObject каждый раз внутри цикла.

JSONArray outer = new JSONArray();
    JSONObject js = null;
    List<String> str = new ArrayList<String>();
    str.add("London");
    str.add("Tokyo");
    str.add("Washington");

    int res = 3;


    for(int i=0;i<res;i++){
        js= new JSONObject();
        js.put("Value", i);
        js.put("Name", "John");
        js.put("Cities", str);
        outer.add(js);          
    }           
    System.out.println(outer);

Кроме того, вы, вероятно, столкнетесь с такой же проблемой, если будете менять города в любое время, поэтому, если они не останутся необходимыми тремя, создайте новый список для каждого объекта.

Автор: dev8080 Размещён: 11.04.2017 04:50

0 плюса

1529 Репутация автора

Вам необходимо создать новый объект JSON для каждой пары Value, Name, Cities. Так что вам нужно поместить его во второй цикл. Нравится

for(int i=0;i<res;i++){
        js= new JSONObject();
Автор: Jay Smith Размещён: 11.04.2017 04:54
Вопросы из категории :
32x32