亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何配置 Jackson 以首先序列化基類?

我如何配置 Jackson 以首先序列化基類?

MYYA 2023-06-14 15:59:39
我有一些存在于層次結構中的 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 的屬性。


查看完整回答
反對 回復 2023-06-14
  • 1 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號