GSon没有正确地继承序列化

时间:2016-07-26 08:23:26

标签: java serialization gson

我是Gson图书馆的新手,不知道为什么这个对象对json转换器的工作很奇怪。我的代码类似于下面的代码

public class A implements Serializable{
    @Expose
    private String name;

    public String getName() {
        return name;
    }

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

}

public class B extends A implements Serializable{
    @Expose
    private int x;

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }
}

 public class MainclassTester{
    public static void main(String[] args){
    public B b = new B();
    b.setName("Point");
    b.setX(2);
    final Gson gson = new GsonBuilder().create();
    System.out.println(gson.toJson(b));

   }
 }

我希望输出是这样的

{
"name":'Point',
 "x":2
}

但我得到了输出

{
 "name":'Point'
 }

我的子类变量没有正确序列化。

1 个答案:

答案 0 :(得分:0)

您需要使用公开来注释您的类,只是为了暴露字段。 那么在private int x;之前你需要擦除曝光吗?

要压制字段,必须使用excludeFieldsWithoutExposeAnnotation修饰符实例化Gson。

GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();