java - gson排除策略仅适用于目标对象的字段

标签 java serialization gson field

我想阻止 Gson 序列化特定类型的字段。为此,我制定了排除策略。排除策略确实成功地识别了正在处理相关类的时间,并且成功地排除了它。不幸的是,它阻止我序列化该类的对象,即使它们是根。我的意思是它们是传递给 gson.toJson() 方法的参数。

更清楚地说,我有一个 Person 类型的类,其类字段本身涉及 Person 类型。我不想序列化 Person 类型的类字段。

public class Person{
   private Person child;
   private String name;
}

因此,在上面的示例中,我想要一个包含 name 字段但不包含 child 字段的 json 对象。我希望解决方案对字段类型敏感,而不是字段名称。

最佳答案

ExclusionStrategy 定义了两种方法,一种用于排除类型,另一种用于排除字段。只需使用 field 方法即可跳过 Person 类型的任何字段。

class PersonExcluder implements ExclusionStrategy {
    @Override
    public boolean shouldSkipField(FieldAttributes f) {
        return f.getDeclaredType().equals(Person.class);
    }

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

然后使用注册它

Gson gson = new GsonBuilder().setExclusionStrategies(new PersonExcluder()).create();

关于java - gson排除策略仅适用于目标对象的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33427728/

相关文章:

c++ - boost 空 std::forward_list 的序列化

serialization - Rust 数据结构的二进制序列化

java - Gson 嵌套对象内的嵌套对象

java - 如何避免在 Spring Cloud Data Flow 上状态仍在运行时重新启动任务

java - 根据文件调用实例方法 updateValues

java - 如何使用正则表达式检查 Java 中的确切电话号码

iphone - 将 NSDate 的描述转换为 NSDate?

java - Gson反序列化集合

android - Kotlin 中使用 GsonTypeAdapter 的 AutoValue

java - 当我按下提交按钮时出现 HTTP 状态 404