我有一些通过avro模式生成的Pojo类。问题是模式中的字段名是用大写字母的第一个字符声明的。我正在接收一个JSON字符串,在JSON字符串中,每个键的名称都以大写字母开头,因此Jackson无法Map数据。
有没有什么方法可以覆盖Jackson解析器的逻辑,只使用get + FieldName和set + FieldName在pojo中找到getter/setter。
Bellow是示例POJO类和JSON,我正试图解析它。
POJO:
public class Sample {
private java.lang.CharSequence Field1;
private java.lang.CharSequence Field2;
private java.lang.CharSequence Field3;
public java.lang.CharSequence getField1() {
return Field1;
}
public void setField1(java.lang.CharSequence Field1) {
this.Field1 = Field1;
}
public java.lang.CharSequence getField2() {
return Field2;
}
public void setField2(java.lang.CharSequence Field2) {
this.Field2 = Field2;
}
public java.lang.CharSequence getField3() {
return Field3;
}
public void setField3(java.lang.CharSequence Field3) {
this.Field3 = Field3;
}
}
JSON:
{
"Field1": "Value1",
"Field2": "Value2",
"Field3": "Value3"
}
解析JSON的代码:
String json = = "";
ObjectMapper objectMapper = new ObjectMapper();
Sample sample = objectMapper.readValue(json, Sample.class);
如果我传递下面的JSON,那么它工作得很好。
{
"field1": "Value1",
"field2": "Value2",
"field3": "Value3"
}
但是我收到的JSON是以前的格式,我不想写一段代码来将每个JSON键的第一个字符转换为小写(这仍然会为一些字段创建一个问题,其中多个起始字母是大写的)。
1条答案
按热度按时间kyxcudwk1#
您应该能够利用Jackson的MixIn特性来实现一个抽象类或接口,该抽象类或接口提供Sample类中的getter方法。然后,您可以将@JsonProperty注解应用于接口getter方法,并将MixIn应用于objectMapper。你可以看看here。See also
您可以尝试:
然后当你调用你的对象Map器时:
您可以使用以下特性(仅在Jackson2.5及以后版本中可用)允许传入JSON的Map不区分大小写。另请参阅this thread,它给出了其他可能的解决方案。