본문 바로가기
Develop/Java

[Json] Json의 개념과 형식

by 연로그 2021. 2. 8.
반응형

개요

JsonNode와 ObjectNode의 차이점을 찾다가 아예 json에 대해 정리하게 되었다.

 

목차는 다음과 같다.

  1. Json의 개념
  2. Java에서 Json 사용하기 - Jackson
  3. JsonObject와 JsonArray
  4. JsonNode와 ObjectNode
  5. 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을 읽기 쉬운 형태로 바꿔주는 사이트

-> jsonlint.com/

 


참고

mommoo.tistory.com/83

 

velog.io/@dev_2dong/JSONObject%EC%99%80-JSONArray%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%99%80-%EC%A0%84%EB%B0%98%EC%A0%81%EC%9D%B8-JSON%ED%98%95%EC%8B%9D%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%EC%95%BC%EA%B8%B0

반응형