我正在尝试向我的数据库读写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();
感谢您的帮助.
解决方法:
您可以使用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"