2012-03-16 56 views
0

我有來自ResultSet的數據,其中包含三個字段:DataType,Data,DataValue。我想構建一個Java集合,然後構建JSON編碼。如何從ResultSet構建此Java集合

這是輸出,當我嘗試打印:

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

輸出:

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 

將得到的Collection:

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 

我用番石榴谷歌集合這樣attemped/Multimap將是:

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

我試過了,但沒有成功的結果。

ResultSet的所有結果都是動態類型,數據和值。我不能使用定義類,例如對於地址數據,基於輸入數據無法顯示。

+1

你是否想要使用Collections?這似乎是一個需要使用'ValueObject'和'訪問者模式'來解決的問題 – 2012-03-16 17:37:21

+0

不,不一定,但這是我第一次想到。在此先感謝;)我會考慮你的回答 – chroman 2012-03-16 17:46:09

回答

1

你可以有一個通用的域對象是這樣的:

Dataobject { 

    dataType; 
    data; 
    dataValue; 

    Set<Dataobject>descendents; 

} 

這會給你鏈接的無盡的深度。

當您迭代結果集時,您可以決定是否要在相同級別或增加深度創建它們。

所有完成後,使用XStream()將它編組爲xml字符串。

1

您需要創建表示您的數據的類。你會有AddressCustomerInformation等 - 然後你可以創建一個包裝類,比如說,Customer,代表一切(Address, CustomerInformation)。 當您從數據庫中讀取記錄時,您可以填充AddressCustomerInformation的新對象,並填充您的對象並將其送入集合。

然後,您可以創建一個實用程序類,它將遍歷此值對象集合中的每個元素並將其轉換爲適當的JSAON表示法。

+0

我不能使用預先定義的類:(resultSet總是返回基於輸入數據的動態值。 – chroman 2012-03-16 18:15:50