forked from HomoEfficio/dev-tips
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Create Jackson Deserialization 대소문자 구분 문제.md
- Loading branch information
1 parent
07f84e3
commit 25a3c46
Showing
1 changed file
with
33 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
``` |