Как собрать эту коллекцию Java из ResultSet - PullRequest
0 голосов
/ 16 марта 2012

У меня есть данные из ResultSet, который содержит три поля: DataType, Data, DataValue.Я хочу создать коллекцию Java, а затем собрать код JSON.

Это вывод при попытке печати:

System.out.println(resultSet.getString("DATATYPE") + " --> " + resultSet.getString("DATA") + " --> " + resultSet.getString("DATAVALUE"));

Вывод:

Address --> Test --> JHGJHGJKG
Address --> City--> Some city
Address --> State --> Some state
Address --> Downtown --> Some downtown
Address --> Telephone --> 547455654
Address --> Street  --> Some street
Customer Information --> Downtown --> some other downtown
Customer Information --> Job --> Programmer
Customer Information --> Identification card --> ID32443
Customer Information --> ZIP Code --> 74584
Customer Information --> Kind of person --> Regular
Customer Information --> Birthday --> 10 01 1980
Customer Information --> Telephone --> 99832498
Other --> Last visit --> 10 01 1980

Я пытался использовать Guava Google Collections следующим образом:

Map<String, String> data = new HashMap<String,String>();
HashMultimap<String, Map> multiMap = HashMultimap.<String, Map> create();
...
//iterating the resultSet
..

data.put(resultSet.getString("DATA"), resultSet.getString("DATAVALUE"));
multiMap.put(resultSet.getString("DATATYPE"), data);
..
// resultSet ends

Полученная коллекция / мультикарта будет выглядеть так:

{
  [
    Address = {
      Test = somevalue,
      City = SomeCity,
      ...
    },
    Customer Information={
      Job = programer,
      Identificationcard = ID34234,
      ...
    },
    Other{
      Lastvisit = 10-02-1990
    }
  ]
}

Я пробовал, но безуспешных результатов.

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

Ответы [ 2 ]

1 голос
/ 16 марта 2012

У вас может быть общий объект домена, подобный этому:

Dataobject {

   dataType;
   data;
   dataValue;

   Set<Dataobject>descendents;

}

Это даст вам бесконечную глубину цепочки.

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

после того, как все это будет сделано, используйте XStream (), чтобы объединить его в строку xml.

1 голос
/ 16 марта 2012

Вам необходимо создать классы, представляющие ваши данные.У вас будет Address, CustomerInformation и т. Д. - тогда вы можете создать класс-оболочку, скажем, Customer, который представляет все (Address, CustomerInformation).Когда вы читаете записи из базы данных, вы можете заполнять новые объекты Address и CustomerInformation, заполнять ваш объект Customer и передавать его в коллекцию.

Затем вы можете создать служебный классон будет проходить через каждый элемент в этой коллекции объектов-значений и преобразовывать его в соответствующую нотацию JSAON.

...