gpt4 book ai didi

java - Gson 不序列化子类中定义的字段

转载 作者:搜寻专家 更新时间:2023-10-31 08:17:59 24 4
gpt4 key购买 nike

如果我出于某种未知原因:

class A{
int stars;
public int getStars(){
return stars;
}

public void setStarts(int stars){
this.stars = stars;
}
}

class B extends A{
int sunshines;

[getter and setter for sunshines]
}

class C{
List<A> classes;
[get and set for classes]
}

如果我序列化 C 类型的对象,我在字段类中的序列化对象中只有 A 的字段(而如果对象是 B,我希望有 B 的字段)。

该怎么做?

最佳答案

Gson 2.1 开箱即用:

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

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class GsonInheritanceTest
{
public static void main(String[] args)
{
Gson gson = new GsonBuilder().setPrettyPrinting().create();
C c = new C();
c.classes = new ArrayList<A>();
c.classes.add(new A(1));
c.classes.add(new B(2, 3));
System.out.println(gson.toJson(c));
}

static class A
{
int stars;

A(int stars)
{
this.stars = stars;
}
}

static class B extends A
{
int sunshines;

B(int stars, int sunshines)
{
super(stars);
this.sunshines = sunshines;
}
}

static class C
{
List<A> classes;
}
}

输出是

{
"classes": [
{
"stars": 1
},
{
"sunshines": 3,
"stars": 2
}
]
}

关于java - Gson 不序列化子类中定义的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8153582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com