2015-10-08 5 views
0

У меня есть таблица, какСоздание JSON должным образом из SQL Resultset с помощью Java

Country  State 

USA   Texas 
USA   Alasca 
India   Delhi 
India   Bombay 
India   Madras 
Russia  Mosco 
Russia  Petersberg 
Germany  Berlin 
China   Beijing 
China   Tibet 
Turkey  Antioch 

Мне нужно, чтобы показать эти элементы в двух отдельных коробках, страны и государства. Когда США выбрано из окна выбора страны, Техас и Аласка должны отображаться в окне выбора государства. Поэтому мне нужно было бы создать объект JSON в качестве

[{Country:USA, State:{{statename:Texas},{statename:Alasca}}}, 
{Country:India, State:{{statename:Delhi}, {statename:Bombay}, {statename:Madras}}}, 
    {Country:Germany, State:{{statename:Berlin}}, 
{Country:Russia, State:{{statename:Mosco},{statename:Petersberg}}}, 
{Country:China, State:{{statename:Beijing}, {statename:Tibet}}}, 
{Country:turkey, State:{{statename:Antioch}}} 
] 

В настоящее время я использую два отдельных SQLs, чтобы получить страну и государство отдельно. Я использую класс Java Страна, как

public class Country implements Serializable { 

String country; 



public String getCountry() { 
    return country; 
} 


public void setCountry(String country) { 
    this.country = country; 
} 

} 

и я использую DAO, как

public List<Country> extractData(ResultSet rs) throws SQLException, 
     DataAccessException { 
    List<Country> list = new ArrayList<Country>(); 

    while (rs.next()) { 
     Country obj = new Country(); 
     obj.setCountry(rs.getString(1).trim()); 

     list.add(obj); 
    } 

    return list; 
    } 

Я получаю объект как:

[{country:USA}, {country:India}, {country:Germany}, {country:Russia}, {country:China}, {country:turkey}] 

Таким же образом, я создал класс для государственных и код для извлечения данных, я получаю состояния как

  [ {state:Texas} {state:Alasca}, {state:Delhi}, {state:Bombay},  {state:Madras}, {state:Berlin}, {state:Mosco}, {state:Petersberg} {state:Beijing}, {state:Tibet}, {state:Antioch}] 

Это может быть указано в отдельных полях отдельно.

Но мне нужен объект следующим образом, чтобы показать их правильно в полях выбора.

[{Country:USA, State:{{statename:Texas},{statename:Alasca}}}, 
{Country:India, State:{{statename:Delhi}, {statename:Bombay}, {statename:Madras}}}, 
    {Country:Germany, State:{{statename:Berlin}}, 
{Country:Russia, State:{{statename:Mosco},{statename:Petersberg}}}, 
{Country:China, State:{{statename:Beijing}, {statename:Tibet}}}, 
{Country:turkey, State:{{statename:Antioch}}} 
] 

я мог бы создать класс Java, как,

class CountryState{ 
    string country; 
    List <State> state; 

    public String getCountry() 
    { 
     return country; 
    } 

    public void setCountry(String country){ 
     this.country=country; 
    } 

    public List<State> getState(){ 
     return state; 
    } 

    public void setState(List<State> state) 
    { 
    this.state.add(state); 
    } 
    } 

    class State{ 
    String statename; 

    public String getStatename() 
    { 
    return statename; 
    } 

    public void setStatename(String statename){ 
    this.statename=statename; 
    } 

Мне нужно знать, как хранить значения в наборе результатов для такого объекта и получения желаемого объекта JSON.

ответ

0

Создайте pojo в JAVA для объекта данных, который поступает из базы данных, и используйте библиотеку конверторов JSON на этом pojo, как вы могли бы использовать GSON или Jackson.

Подсказка: вам может потребоваться изменить ваш запрос в группе по странам, и вам может потребоваться коллекция состояний, сопоставленных с одной страной.