2013-02-03 89 views
0

我有這個問題:在我的sql數據庫中,我有一個表Utente與INT類型的主鍵IDUtente並且是自動增量。 在db我:gson和標識符

ID|Name|.... 
1|Name1|.... 
2|Name2|.... 
下的Java servlet我從數據庫中讀取數據

和序列化與GSON數據是這樣的:

Gson gson = new Gson(); 
String lista = gson.toJson(utenti); 
request.setAttribute("lista", lista); 
request.getRequestDispatcher("GestioneUtenti.jsp").forward(request, response); 

,並在這裏它的確定,因爲該字符串LISTA它的等於:

[{"idUtente":1,"username":"a","password":"a","nome":"a","cognome":"a","dataNascita":"dic 12, 1988","telefono":"3200769667","indirizzo":"a","citta":"a","luogoDiNascita":"a","abbonamentiATempo":0,"abbonamentiAPunti":0,"dataIscrizione":"dic 12, 2000","posizione":"socio","email":"a"},{"idUtente":2,"username":"b","password":"b","nome":"b","cognome":"b","dataNascita":"giu 25, 1960","telefono":"3474213142","indirizzo":"b","citta":"b","luogoDiNascita":"b","abbonamentiATempo":0,"abbonamentiAPunti":0,"dataIscrizione":"mar 11, 2001","posizione":"non socio","email":"b"}] 

在我的JSP頁面現在我要反序列化的字符串,我這樣做是這樣的:

<%String lista = (String)request.getAttribute("lista"); 
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();       
Type listType = new TypeToken<ArrayList<Utente>>() {}.getType(); 
ArrayList<Utente> users = gson.fromJson(lista, listType); 
for(int i=0;i<users.size();i++){ 
out.print("<tr>"); 
out.print("<td>"+users.get(i).getIdUtente()+"</td>"); 
out.print("<td>"+users.get(i).getNome()+"</td>"); 
out.print("<td>"+users.get(i).getCognome()+"</td>"); 
    out.print("<td>"+users.get(i).getPosizione()+"</td>"); 
    out.print("<td>"+users.get(i).getTelefono()+"</td>"); 
} 

問題是打印的ID總是等於0!爲什麼? 如果有必要我還會寫我的班級Utente!

+0

您已經驗證過,您可以閱讀JSON數據的示例列表並獲取對提供的條目有效的Utente對象是否正確? –

回答

0

爲什麼要將utenti序列化爲JSON,將其放入請求中,然後在JSP中對其進行反序列化?

只需將列表放入請求中,並按照字符串提取列表 - 不需要GSON。

現在,如果您將此線路連接到客戶端,那麼我可以看到GSON的需求,但不在您的特定用例中。

您的整個操作發生在服務器內,因此不需要序列化utenti列表實例。

+0

因此,我可以直接將請求中的數組列表放入? – Martina

+0

這不是y問題的答案,但它可以幫助我很多!謝謝! – Martina

+1

我意識到/之後/我發佈,我實際上沒有嘗試回答你的問題 - 我發佈了一個額外的評論 - 我建議你創建一個Utente對象的單元測試,通過GSON從_single_ Utente對象讀取示例JSON文檔並驗證值正在填充 - 如果不知道爲什麼某些屬性沒有被填充。 –