gpt4 book ai didi

java - 我怎样才能让 gson 排除我的对象的父类(super class)?

转载 作者:搜寻专家 更新时间:2023-11-01 01:52:25 26 4
gpt4 key购买 nike

我正在尝试使用 Gson 进行序列化/反序列化。我不想考虑父类(super class)(抽象的),问题是我无权访问父类(super class)代码。

我试过使用 ExclusionStrategy 但它没有用。

private class SuperClassExclusionStrategy implements ExclusionStrategy {

@Override
public boolean shouldSkipClass(Class<?> clazz) {
return clazz.equals(SuperClass.class);
}

@Override
public boolean shouldSkipField(FieldAttributes field) {
return false;
}

}

我该如何解决这个问题?

编辑:

我需要忽略父类(super class)中的字段,这是因为我收到此错误:MyClass declares multiple JSON fields named。我无法更改冲突的字段名称。

解决方案:

通过以下策略解决:

private static class SuperClassExclusionStrategy implements ExclusionStrategy {

public boolean shouldSkipClass(Class<?> clazz) {
return false;
}

public boolean shouldSkipField(FieldAttributes field) {
return field.getDeclaringClass().equals(MySuperClass.class) && field.getName()
.equals("id");
}
}

最佳答案

来自Gson documentation

Exclude fields and objects based on a particular class type:

private static class SpecificClassExclusionStrategy implements ExclusionStrategy {
private final Class<?> excludedThisClass;

public SpecificClassExclusionStrategy(Class<?> excludedThisClass) {
this.excludedThisClass = excludedThisClass;
}

public boolean shouldSkipClass(Class<?> clazz) {
return excludedThisClass.equals(clazz);
}

public boolean shouldSkipField(FieldAttributes f) {
return excludedThisClass.equals(f.getDeclaringClass()());
}
}

关于java - 我怎样才能让 gson 排除我的对象的父类(super class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22764011/

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