청소부 2021. 3. 22. 16:19

1. 개요

 1) JavaScript Object Notation

 2) 데이터 저장 및 교환, 전송 시 많이 사용되는 경량의 데이터 형식으로 데이터를 표시하는 하나의 방식

 3) 특정 언어에 종속되지 않고 대부분의 언어에서 JSON 포맷의 데이터를 핸들링할 수 있는 라이브러리가 존재

 4) XML과 달리 태그가 없고 중괄호 내에 "key":"value" 형식으로 구성

 

2. JavaScript Object

// json 데이터 예시
var jsonText = '{ "age" : "153", "height" : "172", "weight" : "67", "name" : "john doe" }';

var jsonObject = JSON.parse(jsonText);        // json text -> javascript object
var newJsonText  JSON.stringify(jsonObject);  // javascript object -> json text

 

3. ObjectMapper class

 1) JSON 콘텐츠를 java object로 변경하하는 parsing 또는 deserialize에 사용

 

 2) writeValue API를 이용하면 java object를 JSON 콘텐츠로 serialize하는 것 가능

ObjectMapper om = new ObjectMapper();
Smartphone sp = new Smartphone("samsung", "galaxys21ultra");
om.writeValue(new File("생성할 json경로 및 json파일"), sp);

  (1) writeValueAsString: java object로부터 JSON을 만들고 문자열로 반환

  (2) writeValueAsBytes: java object로부터 JSON을 만들고 Byte 배열로 반환

ObjectMapper om = new ObjectMapper();
Smartphone sp = new Smartphone("apple", "iphone12Pro");
String result = om.writeValueAsString(sp);
System.out.println("result:: "+result);  // {"manufacture":"apple", "product":"iphone12Pro"}

 

 3) readValue API를 이용하면 JSON 문자열을 java object로 변환하는 것 가능

ObjectMapper om = new ObjectMapper();
Smartphone sp = om.readValue(new URL("읽어올 json url 정보 및 경로"), Smartphone.class);

 

 ※ serialize, deserialize

  (1) serialize: 객체를 옮기기 쉬운 형태로 전환 -> 클라이언트와 서버 간 이동을 용이하게

  (2) deserialize: serialize의 반대 개념으로 스트림에서 객체를 재구성