Java 将Json转换为列表

Java 将Json转换为列表,java,json,database,gson,Java,Json,Database,Gson,我正在尝试将Json对象读写到我的数据库中,但我不知道如何将从数据库中获取的字符串转换为字符串,以及如何在以后使用它,以便将更改后的列表再次写回我的数据库 因此,当我向数据库询问我想要的字段时,我得到以下字符串: ["[\"pw1\",\"pw2\",\"pw3\"]"] 然后我去创建我的类的对象LastPasswords List<String> passwordList = (List<String>) controllerServlet.getMacroDatab

我正在尝试将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);
然后,当我有这个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"