자바
[JAVA] JSON, ObjectMapper
ChaeHing
2023. 3. 16. 00:01
JSON (JavaScript Object Notation)
- 데이터 교환을 위해 만들어진 객체 형태의 포맷
- 서버와 클라이언트, 서로 다른 언어, 서로 다른 플랫폼등에서 통일된 데이터를 교환하기 위해 사용
- 데이터를 보내는곳에서 JSON형식으로 만들어 보내고 데이터를 받는곳에서 JSON형식을 자신의 플랫폼에 맞게 해석하여 사용 한다.
- JavaScript 객체 표기법의 부분집합이기 때문에 웹브라우저 레벨에서 쉽게 해석할 수 있으며, 모양과 규칙 자체가 단순한 관계로 다른 언어에서 구현하기도 쉽다. 그래서 오늘날 사용되는 거의 모든 프로그래밍 언어에서 사용가능하다.
- key : value 형식으로 되어있다.
JSON의 기본 규칙
- 자바스크립트의 객체와 미묘하게 다른 규칙이 있다.
JSON | JavaScript 객체 | |
키 | 반드시 쌍따옴표를 붙여야한다. {"key":"value"} |
따옴표 없이 사용가능 { key : "value" } |
문자열 value | 반드시 쌍따옴표를 붙여야한다. {"key":"value"} |
어떠한 형태의 따옴표도 사용가능 { key : 'value' } |
공백 | 공백이 없어야한다. {"key":"value"} |
공백가능 { "key" : "value" } |
ObjectMapper
- JAVA의 객체(Object)를 JSON형태로 바꿔주거나 JSON형태를 JAVA의 객체(Object)로 바꿔주는 클래스이다.
- jackson 라이브러리에서 제공한다.
- 객체를 JSON형태로 변환하는것을 직렬화(serialize) JSON형태를 객체로 바꾸는것을 역직렬화(deserialize)
ObjectMapper 사용 예제
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
public class JsonEx {
public static void main(String[] args) throws JsonProcessingException {
HashMap<String, Integer> data = new HashMap<>(){{
put("Messi", 10);
put("Son", 7);
put("Haaland", 9);
put("Salah", 11);
}};
ObjectMapper mapper = new ObjectMapper();
// 직렬화 writeValueAsString() 사용
String json = mapper.writeValueAsString(data);
System.out.println("Json : "+json);
// 역직렬화 readValue() 사용
HashMap<String, Integer> newData = mapper.readValue(json, HashMap.class);
System.out.println("Object : "+newData);
}
}
/*
Json : {"Son":7,"Haaland":9,"Salah":11,"Messi":10}
Object : {Son=7, Haaland=9, Salah=11, Messi=10}
*/