Java 将Json转换为列表
我正在尝试将Json对象读写到我的数据库中,但我不知道如何将从数据库中获取的字符串转换为字符串,以及如何在以后使用它,以便将更改后的列表再次写回我的数据库 因此,当我向数据库询问我想要的字段时,我得到以下字符串:Java 将Json转换为列表,java,json,database,gson,Java,Json,Database,Gson,我正在尝试将Json对象读写到我的数据库中,但我不知道如何将从数据库中获取的字符串转换为字符串,以及如何在以后使用它,以便将更改后的列表再次写回我的数据库 因此,当我向数据库询问我想要的字段时,我得到以下字符串: ["[\"pw1\",\"pw2\",\"pw3\"]"] 然后我去创建我的类的对象LastPasswords List<String> passwordList = (List<String>) controllerServlet.getMacroDatab
["[\"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);
然后,当我有这个json字符串时,我尝试将它作为一个列表来获取,但是我没有得到这个列表
lastPasswords.setPasswords((List<String>) gson.fromJson(banana, LastPasswords.class));
passwordList = lastPasswords.getPasswords();
lastPasswords.setPasswords((List)gson.fromJson(banana,lastPasswords.class));
passwordList=lastPasswords.getPasswords();
谢谢您的帮助。您可以使用
com.google.gson.reflect.TypeToken.TypeToken
来定义json方法的返回类型。
然后,在获得列表后,您可以创建一个新的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]
String json=“[\“pw1\”、\“pw2\”、\“pw3\””;
Gson Gson=新的Gson();
List List=gson.fromJson(json,newTypeToken(){}.getType());
System.out.println(list.size());
系统输出打印项次(列表);
输出:
3.
[pw1,pw2,pw3]
我建议保留密码
类,而不是保留列表密码
类
让我们假设,您有这样一个Password
类
public class Password {
public String password;
// Getter and setter
}
现在,当您使用gson读取json字符串时,您可能必须这样做
Password[] passwordArray = gson.fromJson(json, Password[].class);
这将把json字符串映射到密码的数组中。然后,如果您愿意,可以考虑将它们填充到列表中。
List<Password> passwordList = Arrays.asList(passwordArray);
List passwordList=Arrays.asList(passwordArray);
您可以使用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=gson.fromJson(json,newTypeToken(){}.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"
String json=“[\”[\”[\“pw1\”、\“pw2\”、\“pw3\”]\”;
List List=gson.fromJson(json,newTypeToken(){}.getType());
list.get(0).get(0)=“pw1”
谢谢,我会很快尝试这个方法。这个方法很有效,但与我得到的字符串不匹配,因为你没有放在周围的方括号中。我需要除掉它们吗?我需要除掉它们吗?我不知道包裹你的绳子的方括号。很抱歉:D我只是想知道你是否存储了一个LastPasswords
的列表,这样它们就变成了一个字符串列表。谢谢,但它不起作用,因为我的字符串每边都有两个方括号,我想我需要去掉一对,但我不知道如何使用方括号?给我们看看。我认为这是一个编码问题[“[\“pw1\”,“pw2\”,“pw3\”]”]这就是我的意思:)这个字符串是一个数组,非常感谢你。我很愚蠢,做了很多事。在你发帖之后,事情变得容易多了。谢谢
String json = "[\"[\"pw1\",\"pw2\",\"pw3\"]\"]";
List<List<String>> list = gson.fromJson(json, new TypeToken<List<List<String>>>(){}.getType());
list.get(0).get(0) == "pw1"