簡體   English   中英

是否可以使使用 Avro Maven 插件生成的 POJO 與 Jackson 兼容?

[英]Is it possible to make POJOs generated with the Avro Maven plugin play nice with Jackson?

我在使用 Avro 時遇到的問題是我們需要為我們的數據 model 使用標題大小寫名稱,但對於我們的數據結構(例如 DTO)的 rest 使用駝峰名稱。 這是一個例子:

{
  "name": "UserRecord",
  "type": "record",
  "fields": [
    {
      "name": "Username",
      "type": "string"
    }
  ]
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CreateUserRequestDTO {
  private UserRecord userRecord;
}

Maven Avro 插件將生成如下Username段:

private String Username;

所以我們在我們的字段代碼中有一個丑陋的組合,在某些情況下是標題大小寫,而在其他情況下是駝峰式大小寫。 有沒有一種好方法可以讓 Jackson 的ObjectMapper能夠讀取這兩個屬性名稱約定?

大小寫混合導致 Spring Boot 的 ObjectMapper 無法識別標題大小寫的 Avro 字段,它們的所有字段都是 null。

我不知道它是否真的適用於您的用例,但也許您可以啟用Jackson 的映射器配置屬性ACCEPT_CASE_INSENSITIVE_PROPERTIES

如果啟用,bean 屬性將使用它們的小寫等價物進行匹配,這意味着任何大小寫組合(傳入和匹配名稱由小寫規范化)都應該有效。

您可以在配置鍵spring.jackson.mapper.*下自定義application配置文件中的值,例如:

spring:
  jackson:
      mapper:
          ACCEPT_CASE_INSENSITIVE_PROPERTIES: true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM