不更改 POJO 的不区分大小写的 JSON 到 POJO 映射

新手上路,请多包涵

有谁知道 com.fasterxml.jackson.databind.ObjectMapper 如何能够将 JSON 属性映射到不区分大小写的 POJO 属性?

JSON 字符串:

[{“FIRSTNAME”:“John”,“LASTNAME”:“Doe”,“DATEOFBIRTH”:“1980-07-16T18:25:00.000Z”}]

POJO 类:

 public class Person {

    private String firstName;
    private String lastName;
    private Date dateOfBirth;

    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public Date getDateOfBirth() {
        return dateOfBirth;
    }
    public void setDateOfBirth(Date dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }
}

测试类:

 @Test
public final void testDeserializingPersonJsonToPersonClass()
        throws JsonParseException, JsonMappingException, IOException {
    final String jsonAsString = "[{\"FIRSTNAME\":\"John\",\"LASTNAME\":\"Doe\",\"DATEOFBIRTH\":\"1980-07-16T18:25:00.000Z\"}]";
    final ObjectMapper mapper = new ObjectMapper();

    final Person person = mapper.readValue(jsonAsString, Person.class);

    assertNotNull(person);
    assertThat(person.getFirstName(), equalTo("John"));
}

这最终导致以下错误:

com.fasterxml.jackson.databind.JsonMappingException:无法反序列化…的实例

既不能更改 JSON 字符串也不能更改 POJO 类。

原文由 Mark Fellner 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 475
1 个回答

此行为是在 Jackson 2.5.0 中引入的。您可以使用 MapperFeature 将映射器配置为不区分大小写。 ACCEPT_CASE_INSENSITIVE_PROPERTIES

例如 :

 ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

原文由 Nicolas Riousset 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题