일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- reactor core
- 웹앱
- Spring Framework
- reactor
- 웹 커리큘럼
- 공유기 서버
- 서버운영
- ipTIME
- Spring Batch
- 웹 스터디
- reactive
- spring reactive
- Today
- Total
Hello World
[jackson] ObjectMapper를 이용하여 java object를 json 문자열로 변환하기 본문
Jackson은 json을 처리하는 3가지 방법을 제공하는데, 여기서는 간단하게 Data Binding 방법을 소개한다.
1. json 데이터를 java object로 변경하기
* json data
{ "name" : { "first" : "Joe", "last" : "Sixpack" }, "gender" : "MALE", "verified" : false, "userImage" : "Rm9vYmFyIQ==" }
* User클래스
public class User { public enum Gender { MALE, FEMALE }; public static class Name { private String _first, _last; public String getFirst() { return _first; } public String getLast() { return _last; } public void setFirst(String s) { _first = s; } public void setLast(String s) { _last = s; } } private Gender _gender; private Name _name; private boolean _isVerified; private byte[] _userImage; public Name getName() { return _name; } public boolean isVerified() { return _isVerified; } public Gender getGender() { return _gender; } public byte[] getUserImage() { return _userImage; } public void setName(Name n) { _name = n; } public void setVerified(boolean b) { _isVerified = b; } public void setGender(Gender g) { _gender = g; } public void setUserImage(byte[] b) { _userImage = b; } }
1-1. 단순 object로 변경하기
ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
User user = mapper.readValue(new File("user.json"), User.class);
1-2. Generic등으로 변경하기 ( Map, 또는 ArrayList 등 )
Map<String,User> result = mapper.readValue(src, new TypeReference<Map<String,User>>() { });
1-3. Gson에서는
#Type을 이용한 방법 ( gson )
Type collectionType = new TypeToken<Collection<Event>>(){}.getType();
Collection<Event> eventArray = gson.fromJson(array.get(3), collectionType);
2. java object를 json data로 변경하기
simple 객체나 generics로된 리스트나 모두 아래와 같이 하면 된다.
3. 변환시 맵핑되는 JSON과 Java Type
JSON Type | Java Type |
object | LinkedHashMap<String,Object> |
array | ArrayList<Object> |
string | String |
number (no fraction) | Integer, Long or BigInteger (smallest applicable) |
number (fraction) | Double (configurable to use BigDecimal) |
true|false | Boolean |
null | null |
참고 : http://wiki.fasterxml.com/JacksonInFiveMinutes
출처: http://hanburn.tistory.com/99
'Spring > 3.x' 카테고리의 다른 글
객체 검증의 종결자 @Valid (0) | 2017.02.10 |
---|---|
@Autowired, @Resource, @Inject의 차이 (0) | 2016.07.22 |
JSTL 에서 MAP 접근, 출력 (KEY로 바로 값 추출) (0) | 2016.05.17 |
Mybatis #과 $의 차이 (0) | 2016.05.12 |
@Schedule Spring 스프링 스케쥴 설정법 & CronTab (0) | 2016.05.11 |