2016-12-14 33 views
3

我想讀取和寫入一個Json對象到我的數據庫,我沒有得到如何將您從數據庫中獲得的字符串轉換爲字符串,以及如何使用它稍後tp寫回再次將列表更改爲我的數據庫。Convertig Json到列表

所以,當我要求我要領域的數據庫中,我得到這個字符串返回:

["[\"pw1\",\"pw2\",\"pw3\"]"] 

然後我去創造我的類的對象LastPasswords

List<String> passwordList = (List<String>) controllerServlet.getMacroDatabaseManager().executeNativeQuery(queryGet); 
LastPasswords lastPasswords = new LastPasswords(passwordList); 
Gson gson = new Gson(); 
String Json = gson.toJson(lastPasswords); 

這裏是LastPasswords

public class LastPasswords { 

    private List<String> passwords; 

    public LastPasswords(List<String> passwords) { 
     this.passwords = passwords; 
    } 

    public List<String> getPasswords(){ 
     return passwords; 
    } 
    public void setPasswords(List<String> passwords){ 
     this.passwords = passwords; 
    } 
} 

然後,當我有這個json字符串我t把它作爲一個清單,但我沒有得到清單。

lastPasswords.setPasswords((List<String>) gson.fromJson(banana, LastPasswords.class)); 
passwordList = lastPasswords.getPasswords(); 

感謝您的幫助。

回答

1

您可以使用TypeToken將json字符串加載到自定義對象中。

String json = "[\"pw1\",\"pw2\",\"pw3\"]"; 
List<String> list = gson.fromJson(json, new TypeToken<List<String>>(){}.getType()); 

或者絃樂

String json = "[\"[\"pw1\",\"pw2\",\"pw3\"]\"]"; 
List<List<String>> list = gson.fromJson(json, new TypeToken<List<List<String>>>(){}.getType()); 

list.get(0).get(0) == "pw1" 
+0

謝謝,但它不工作,因爲在我的字符串的每一邊有2方括號,我需要擺脫一對我認爲但我不知道如何 – Frekell

+0

方括號?給我們看一看。我認爲這是一個編碼問題 – thepaulo

+0

[「[\」pw1 \「,\」pw2 \「,\」pw3 \「]」]這就是我的意思:) – Frekell

2

您可以使用com.google.gson.reflect.TypeToken.TypeToken定義返回類型fromJson方法。 然後,您有清單,您可以創建一個新的LastPasswords使用。

String json = "[\"pw1\",\"pw2\",\"pw3\"]"; 
    Gson gson = new Gson(); 
    List<String> list = gson.fromJson(json, new TypeToken<List<String>>() {}.getType()); 
    System.out.println(list.size()); 
    System.out.println(list); 

Output: 
3 
[pw1, pw2, pw3] 
+0

致謝名單的名單,我會嘗試了這一點真正快。 – Frekell

+0

這工作,但不是與我正在得到的字符串,因爲方形括號,周圍,你沒有把周圍。我需要擺脫他們,我擺脫他們? – Frekell

+0

我不知道包裹你的字符串的方括號。對不起:D我只是想知道你是否存儲了一個'LastPasswords'列表,所以它們成爲String列表的列表。 –

1

我想推薦保持Password類,而不是保持ListPassword類的。

讓我們假設,你有一個這樣的Password類。

public class Password { 
    public String password; 

    // Getter and setter 
} 

現在,當您使用gson讀取json字符串時,您可能必須這樣做。

Password[] passwordArray = gson.fromJson(json, Password[].class); 

這會將json字符串映射到Password的數組中。那麼你可以考慮將它們填入列表中,如果你喜歡。

List<Password> passwordList = Arrays.asList(passwordArray);