java—有没有可能让用avro maven插件生成的pojo与jackson一起玩得很好?

rur96b6h  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(353)

我在avro中遇到的问题是,我们需要对数据模型使用title-case名称,但对其他数据结构(如dto)使用camel-case名称。举个例子:

{
  "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 能够读取这两个属性名称约定吗?
大小写混合会导致以标题大小写的avro字段无法被spring boot的objectmapper识别,并且它们的所有字段都为null。

rjjhvcjd

rjjhvcjd1#

我不知道它是否真的能在你的用例中工作,但是也许你可以启用jackson的mapper配置属性 ACCEPT_CASE_INSENSITIVE_PROPERTIES :
如果启用,bean属性将使用它们的小写等价物进行匹配,这意味着任何大小写组合(传入和匹配的名称由小写规范化)都应该工作。
您可以自定义 application 配置密钥下的配置文件 spring.jackson.mapper.* ,类似于:

spring:
  jackson:
      mapper:
          ACCEPT_CASE_INSENSITIVE_PROPERTIES: true

相关问题