【发布时间】:2018-07-17 17:40:22
【问题描述】:
我想在用 Jackson 反序列化之后知道 Json 输入设置了哪些字段(甚至为 null),因此我可以区分空字段而不是设置为 null 的字段与 Json 中未指定的字段。
这个问题是在我的previous one about BeanDeserializerModifier之后提出的。
public class Dto {
public Collection<String> deserializedFields;
// or even better a collection of reflection fields of the object.
}
public MyFooDto extends Dto {
public Integer myField1;
@PossiblySomeJacksonAnnotation (include, exclude, map on other name, special deserializer, etc...)
public SomeDatatype myField2;
}
示例:通过反序列化 {"myField1": null} 我希望得到 deserializedFields = ["myField1"],通过反序列化 {} 我希望得到 deserializedFields = []。
我已经在custom deserializer and a BeanDeserializerModifier 中尝试过,但我仍然无法拦截 Json 对象内的字段列表(或者如果我这样做,它已经消耗了 JsonParser 并且无法反序列化)。 在最好的情况下,我还将获得已设置的 MyFooDto 字段的反射列表...
你知道我该怎么做吗?
感谢社区!
【问题讨论】:
-
欢迎来到stackoverflow!确保您始终添加一个语言标签,在这种情况下为“java”,以在您的帖子中启用语法突出显示并吸引更多关注。
标签: java spring-boot jackson deserialization json-deserialization