2016-12-14 48 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);