我有一些存在于层次结构中的 JSON 模式:A extends B extends C。我正在使用jsonschema2pojo从这些中生成 Java 类,并将它们生成到匹配的类层次结构中。由于我生成类的方式,我无法细粒度地控制哪些注释可以应用于哪些字段(即@JsonPropertyOrder)当我连载 Jackson 时,我得到类似的东西{ "propertyOfA": "razz", "propertyOfA": "jazz", "propertyOfA": "baz", "propertyOfB": "bar", "propertyOfC": "foo"}这是正确的,因为属性顺序在 JSON 中没有意义。然而,我的实际消息非常长——数千个字符——在浏览日志时,如果更通用的属性(来自基本模式、模式 C 的属性)(只有少数几个)首先出现,会更方便在消息中。架构/类中的各个属性顺序并没有让我很困扰,但如果我能让 Jackson 先降低层次结构然后回溯,那就太好了。{ "propertyOfC": "foo", "propertyOfB": "bar", "propertyOfA": "razz", "propertyOfA": "jazz", "propertyOfA": "baz"}我检查了所有的Features 和MapperFeatures,我发现唯一影响顺序的是SORT_PROPERTIES_ALPHABETICALLY.ObjectMapper在-level 上,或者在不改变类的情况下,我还能做些什么来影响这个顺序?
1 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
您可以在其(生成的)源文件之外的类上应用mixin注释。例如
在一个新文件上,定义一个接口:
@JsonPropertyOrder({"propertyOfC", "propertyOfB"}) public interface MixinA { }
并在您的注册ObjectMapper
:
objectMapper.addMixIn(A.class, MixinA.class);
此顺序注释中列出的属性排在第一位,因此您可以跳过 A 的属性。
添加回答
举报
0/150
提交
取消