我正在尝试读取和编写一个Json对象到我的数据库,我没有得到如何将从数据库中获得的字符串转换为字符串以及我以后如何使用它tp写回更改的列表再次进入我的数据库。
所以,当我向数据库询问我想要的字段时,我会收到这个字符串:
["[\"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字符串时,我会尝试将其作为列表,但我没有得到列表。
lastPasswords.setPasswords((List<String>) gson.fromJson(banana, LastPasswords.class));
passwordList = lastPasswords.getPasswords();
感谢您的帮助。
答案 0 :(得分: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]
答案 1 :(得分: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);
答案 2 :(得分:1)
您可以使用TypeToken将json字符串加载到自定义对象中。
String json = "[\"pw1\",\"pw2\",\"pw3\"]";
List<String> list = gson.fromJson(json, new TypeToken<List<String>>(){}.getType());
或者是String列表
String json = "[\"[\"pw1\",\"pw2\",\"pw3\"]\"]";
List<List<String>> list = gson.fromJson(json, new TypeToken<List<List<String>>>(){}.getType());
list.get(0).get(0) == "pw1"