Gson使用列表解析Json< String>

w51jfk4q  于 2022-11-06  发布在  其他
关注(0)|答案(3)|浏览(152)

我有一个包含一些字段的类:

public class GsonRepro {
    class A {
        private List<String> field1 = new ArrayList<>();
        private String name;
        private Integer status;

        public A(){
        }

        public List<String> getfield1() { return field1; }
        public void setField1(List<String> field1) { this.field1 = field1; }

        public String getName() { return name; }
        public void setName() { this.name = name; }

        public Integer getStatus() { return status; }
        public void setStatus(int status) { this.status = status; }
    }

    public static void main(String[] args) {
        String str = "{\"name\":\"my-name-1\",\"status\":0,\"field1\":[\"0eac6b1d3d494c2d8568cd82d9d13d5f\"]}";
        A a = new Gson().fromJson(str, A.class);
    }
}

除了List<String> field1之外,所有字段都已解析,我如何才能使其工作?

解决方案:

上面的代码工作得很好。最初,我只是在列表字段中有一个错字。

pcww981p

pcww981p1#

我尝试了上面的代码,你分享和工作正常,没有任何问题。请检查以下代码并验证,

public static void main(String[] args) {
    String str = "{\"name\":\"my-name-1\",\"status\":0,\"field1\":[\"0eac6b1d3d494c2d8568cd82d9d13d5f\"]}";
    A a = new Gson().fromJson(str, A.class);
    System.out.println(a.getName());
    System.out.println(a.getStatus());
    System.out.println(a.getfield1());
}

以下是在控制台上打印的输出,

my-name-1
0
[0eac6b1d3d494c2d8568cd82d9d13d5f]
mqxuamgl

mqxuamgl2#

您可以尝试像this中那样使用TypeToken来回答另一个问题。
对您而言,它看起来像这样:

import java.lang.reflect.Type;
import com.google.gson.reflect.TypeToken;

...

Type type = new TypeToken<A>(){}.getType();
A a = new Gson().fromJson(str, type);

问候语

odopli94

odopli943#

import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;

class A {
    private List<String> field1 = new ArrayList<>();
    private String name;
    private Integer status;

    public A() {
    }

    public List<String> getfield1() {
        return field1;
    }

    public void setField1(List<String> field1) {
        this.field1 = field1;
    }

    public String getName() {
        return name;
    }

    public void setName() {
        this.name = name;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }
}

public class GsonParseList {
    public static void main(String[] args) {
        String str = "{'name':'my-name-1','status':0,'field1':['0eac6b1d3d494c2','d8568cd82d9d13d5f']}";
        A a = new Gson().fromJson(str, A.class);
        System.out.println(a.getfield1());
    }
}

相关问题