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