【问题标题】:objectmapper only serialize specific fields [duplicate]objectmapper 仅序列化特定字段 [重复]
【发布时间】:2021-12-11 17:16:37
【问题描述】:

我想编写一个只序列化具有给定隐式字段名称的 POJO 的函数。

例如,

class Car{
    public int id;
    public String type;
    public Manufacture manufacture;
}

Class Manufacture{
   public int id;
   public String name;
}

如果我想用给定列表序列化 Car 对象(即 [Car.id, Car.Manufacture.name]) 那我想得到

{
    Car:{
        id: xxx,
        Manufacture: {
            name: xxx
        }
    }
}

另一个例子,给定 list = [Car.type]
那我应该得到

{
    Car:{
        type: xxx
    }
}

我目前正在尝试重写 serializeAsField 方法来检查该字段是否在给定列表中,但这里的问题是我不知道深度,然后我无法正确比较包含列表的当前字段。

我怎样才能实现它?还有其他方法吗?

【问题讨论】:

  • 你的目标是什么?您能否举例说明您得到的结果与预期的结果?问题不清楚。
  • 您目前如何将数据序列化为 JSON?您使用的是哪个 API?请edit您的问题包括您拥有的相关源代码,如果可能,请使用minimal reproducible example

标签: java jackson objectmapper


【解决方案1】:

使用@JsonIgnore 注释标记不需要的字段。

动态过滤
这是一篇 Baeldung 文章,讨论使用过滤器 确定哪些字段被序列化: https://www.baeldung.com/jackson-serialize-field-custom-criteria

我怀疑这就是你想要的答案。

【讨论】:

  • 如果不需要的字段是隐式的
  • 没有魔法。您必须确定自己想要什么和不想要什么。
  • 想要的字段是在运行时生成的,我相信我应该重写一些方法来实现它。
猜你喜欢
  • 2016-06-29
  • 1970-01-01
  • 2020-06-15
  • 2021-05-14
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多