반응형
개요
JsonNode와 ObjectNode의 차이점을 찾다가 아예 json에 대해 정리하게 되었다.
목차는 다음과 같다.
- Json의 개념
- Java에서 Json 사용하기 - Jackson
- JsonObject와 JsonArray
- JsonNode와 ObjectNode
- Json 관련 사이트들
1. Json이란?
- key - value가 쌍으로 이루어진 데이터들의 집합
- 사용자가 key 값을 알고 있으면 데이터를 손쉽게 추출할 수 있다.
- 각 데이터는 String, Number, Array 등 다양한 형태로 작성이 가능
- 배열은 '[ ]' 괄호 안에 값들을 담으며, ' , '로 값을 분리하는 것도 가능
- 프로그래밍 언어의 제약이 거의 없다.
- 데이터를 전송할 때 최소한의 용량으로 전송하기 위해 사용
2. Java에서 Json 사용하기
Json을 이용하기 위해선 Jackson, GSON, SimpleJSON 등 다양한 api가 있다.
스프링 3.0 부터는 Jackson과 관련된 api를 제공해 더 편리해졌다.
이 포스팅에서는 Jackson을 이용해보겠다.
Spring 3.0 이후의 컨트롤러는 return 방식이 @RequestBody 형식이다.
이 때 MessageConverter API를 이용하면 컨트롤러가 리턴하는 객체를 가로챌 수 있다.
Jackson은 JSON 데이터를 출력하기 위한 MappingJacksonHttpMessageConverter를 제공한다.
만약 MessageConverter를 MappingJacksonHttpMessageConverter로 등록한다면,
컨트롤러가 return하는 객체를 가로채서 JSON 객체로 만든 뒤, (Jackson의 ObjectMapper API 이용) 출력하여 JSON 데이터를 완성한다.
(+ Spring 3.1 이후로는 classPath에 Jackson 라이브러리가 존재만 해도 자동적으로 MessageConverter가 등록된다. )
@RequestMapping("/json")
@ResponseBody()
public Object printJSON() {
Person person = new Person("TEST", "Server Developer");
return person;
}
이제는 이렇게 데이터 인스턴스만 return 해도 JSON 데이터를 출력할 수 있는 것이다.
3. JsonObject와 JsonArray
JsonObject
- '{ }' 안에 하나 이상의 key - value 쌍을 보유
- 순서가 구분되지 않은 집합체
{
"닉네임" : "yeonLog",
"블로그" : "yeonyeon.tistory.com",
"생성연도" : 2021
}
JsonArray
- 배열 구조
- '[ ]'에 값을 담는다.
- index를 통해 값을 꺼낼 수 있다. (= 순서 구분 가능 )
- JsonObject들이 모인 형태
"blogs" : [{
"닉네임" : "yeonlog",
"생성연도" : 2021,
"블로그" : "yeonyeon.tistory.com"
}, {
"닉네임" : "ㄳㅇ",
"생성연도" : 2019,
"블로그" : "https://blog.naver.com/white_la"
}]
4. JsonNode와 ObjectNode
JsonNode
- 불변하는 객체
- 값을 불러올 수 있고 넣을 수는 없다.
ObjectNode
- 가변하는 객체
- 값을 불러올 수 있고 넣을 수도 있다.
5. 추가
JSON을 읽기 쉬운 형태로 바꿔주는 사이트
참고
반응형
'Develop > Java' 카테고리의 다른 글
[Ant] Unable to find a javac compiler 에러 (0) | 2021.03.05 |
---|---|
[Ant] Unable to locate tools.jar. Expected to find it ... 에러 (0) | 2021.03.02 |
[Java] String, StringBuffer, StringBuilder (0) | 2021.02.02 |
[java] this와 this() (0) | 2021.01.26 |
[JPA] 더티 체킹 (0) | 2021.01.18 |