Skip to content

Commit

Permalink
Create Jackson Deserialization 대소문자 구분 문제.md
Browse files Browse the repository at this point in the history
  • Loading branch information
HomoEfficio authored May 17, 2017
1 parent 07f84e3 commit 25a3c46
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions Jackson Deserialization 대소문자 구분 문제.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Jackson Deserialization 대소문자 구분 문제

Jackson으로 json 문자열을 Java 객체로 Deserialization 할 때 property 이름 대소문자를 구별한다.

대략 아래와 같은 User 클래스가 있을 때,

```java
class User {
private String name;
private String email;

// getter, setter
}
```

아래와 같이 JSON 문자열 내 property 이름이 `name`, `email`이 아니라 `Name`, `Email`로 되어 있으면,

```java
objectMapper.readValue(
"{ \"Name\":\"돌아이\", \"Email\":\"[email protected]\"}", // name, email이 아니라 Name, Email
User.class
);
```

ObjectMapper는 기본적으로 대소문자를 구분하므로 아래과 같은 에러가 난다.

>com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "Name" (class **.User), not marked as ignorable (2 known properties: "name", "email"])
해결은 간단하다. 아래와 같이 ObjectMapper에 `MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES``true`로 설정해주면 된다.

```java
new ObjectMapper().configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
```

0 comments on commit 25a3c46

Please sign in to comment.