2014-09-17 5 views
1

Я пытаюсь построить JSON в моем сервлете. объект должен выглядеть следующим образом:Динамически созданный объект JSON в Java

{ 
    "firms": [ 
    { 
     "name": "firm1", 
     "projects": [ 
     { 
      "name": "firm1project1" 
     }, 
     { 
      "name": "firm1project2" 
     }, 
     { 
      "name": "firm1project3" 
     } 
     ] 
    }, 
    { 
     "name": "firm2", 
     "projects": [ 
     { 
      "name": "firm2project1" 
     }, 
     { 
      "name": "firm2project2" 
     }, 
     { 
      "name": "firm2project3" 
     } 
     ] 
    }, 
    { 
     "name": "firm3", 
     "projects": [ 
     { 
      "name": "firm3project1" 
     }, 
     { 
      "name": "firm3project2" 
     }, 
     { 
      "name": "firm3project3" 
     } 
     ] 
    }, 
    { 
     "name": "firm4", 
     "projects": [ 
     { 
      "name": "firm4project1" 
     }, 
     { 
      "name": "firm4project2" 
     }, 
     { 
      "name": "firm4project3" 
     } 
     ] 
    } 
    ] 
} 

У меня есть проблема в создании массива имен проектных объектов:

[ 
    { 
     "name": "firm2project1" 
    }, 
    { 
     "name": "firm2project2" 
    }, 
    { 
     "name": "firm2project3" 
    } 
] 

Сейчас у меня есть код, как показано ниже (oJsonInner является объектом JSONObject, aProjects - ArrayList типа JSONObject). Я строй объекта oJsonInner из результатов, которые я получаю от запроса к базе данных:

while(result.next()){ 
oJsonInner.put("name",result.getString("project_name")); 
aProjects.add(oJsonInner); 
} 

Есть ли способ, чтобы получить значение объекта oJsonInner в aProjects.add(oJsonInner); так в течение следующего цикла я мог бы создать новый объект oJsonInner с различным " project_name "без обновления объекта, который попал в массивProjects в течение первого цикла?

Я просмотрел API JSONObject, но не нашел ответа на свою проблему.

спасибо.

ответ

4
while(result.next()){ 
    oJsonInner = new JsonObject(); 
    oJsonInner.put("name",result.getString("project_name")); 
    aProjects.add(oJsonInner); 
} 
+0

Это сработало, спасибо! – keshet

0

Используйте Gson Lib, который поможет вам сериализации формат JSON, который взять Java Bean и преобразовать его в формат JSON.

Модель

public class Firm { 
private String name; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

private List<Project> projetcts; 


public List<Project> getProjetcts() { 
    return projetcts; 
} 

public void setProjetcts(List<Project> projetcts) { 
    this.projetcts = projetcts; 
} 


public static class Project{ 
    private String name; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

} 
} 

Gson код

public static void main(String[] args) { 
    Firm [] firms = new Firm[2]; 

    Project p1 = new Project(); 
    p1.setName("project 1"); 
    Project p2 = new Project(); 
    p2.setName("project 2"); 
    Project p3 = new Project(); 
    p3.setName("project 3"); 
    List<Project> projects = new ArrayList<Firm.Project>(); 
    projects.add(p1); 
    projects.add(p2); 
    projects.add(p3); 

    Firm firm1 = new Firm(); 
    firm1.setName("firm1"); 
    firm1.setProjetcts(projects); 

    Firm firm2 = new Firm(); 
    firm2.setName("firm2"); 
    firm2.setProjetcts(projects); 

    firms[0] = firm1; 
    firms[1] = firm2; 

    String jsonText = new Gson().toJson(firms); 
    System.out.println(jsonText); 

} 

Результат Образец

[{ "Имя": "firm1", "projetcts": [ {"name": "project 1"}, {"name": " проект 2 "}, {" name ":" project 3 "}]}, {" name ":" firm2 "," projetcts ": [{" name ":" project 1 "}, {" name " : "проект 2"}, { "имя": "проект 3"}]}]

1

Попробуйте этот метод:

ArrayList<JSONObject> aProjects = new <JSONObject>ArrayList(); 

while(result.next()){ 
    JSONObject oJsonInner = new JSONObject(); 
    oJsonInner.put("name","project1"); 
    aProjects.add(oJsonInner); 
} 

РЕЗУЛЬТАТ:

[{"name":"project1"}, {"name":"project2"}] 
1

вы можете использовать JSONArray и добавить объект JSON.

while(result.next()){ 
    JSONObject oJsonInner = new JSONObject(); 
    JSONArray arr = new JSONArray(); 
    json.put("name",result.getString("project_name")); 
    arr.put(json); 
} 
Смежные вопросы