2013-09-10 4 views
0

Мне нужно преобразовать мои данные в ArrayList в файл JSON, и я использую JSON.simple. Все хорошо, кроме одной мелочи, которую я хочу получить, например ... {источник: 0, цель: 1}, {источник: 0, цель: 1}, {источник: 0, цель: 2 }, {источник: 0, цель: 3} ...... но он возвращает ...... {источник: 0, цель: 16}, {источник: 0, цель: 16}, {источник : 0, цель: 16} ....... Мой solution.size() есть 17. Вот мой код:Ошибка при использовании JSONSimple для записи json-файла с циклом for

 JSONObject jsonObject = new JSONObject(); 
     JSONObject jsonNodesObject = new JSONObject(); 
     JSONObject jsonEdgesObject = new JSONObject(); 
     JSONArray jsonNodesArray = new JSONArray(); 
     JSONArray jsonEdgesArray = new JSONArray(); 

     String instString = solutions.get(0).get("institution"); 
     jsonNodesObject.put("name", instString); 
     // extract name and institution from ArrayList 
     for (int i = 0; i < solutions.size(); i++) 
     { 
      HashMap<String, String> eleHashMap= solutions.get(i); 
      String nameString = eleHashMap.get("name"); 
      jsonNodesObject.put("name", nameString); 
      jsonNodesArray.add(jsonNodesObject); 
      jsonEdgesObject.put("source", 0); 
      jsonEdgesObject.put("target", i); 
      jsonEdgesArray.add(jsonEdgesObject); 
     } 
     jsonObject.put("nodes", jsonNodesArray); 
     jsonObject.put("edges", jsonEdgesArray); 
     System.out.println(jsonObject); 

кажется, что в каждом цикле за это обновляет значение цели: я всего моего jsonEdgesArray.

Доза любой знает, как это исправить? Заранее спасибо!

ответ

0

Как итерационный цикл jsonNodesObject in for, для jsonNodesObject.put будет установлено одно и то же значение («name», nameString); u необходимо инициализировать JSONObject jsonNodesObject = new JSONObject(); внутри петли

+0

Какая ошибка я совершил. Благодаря! – ray6080