반응형

# 객체 표현 (JSON)

  • 이기종 시스템 간에 데이터를 주고 받을 때 사용.
  • 쉽게 데이터를 주고 받을 수 있는 방법에는 객체를 문자열의 형태로 주고 받는 방법이다.

## 2명의 회원정보를 표현하고자 할때,아래와 같이 표현 가능.

1. 의미 없고, 구분이 있는 문자형 형태 : 단순하지만 데이터 처리의 어려움

String textMember = "홍하나, 서울, 010-123-1234#홍둘이, 경기도, 010-123-1235";

2. 의미 있고, 구분 있는 문자열 형태 (XML == 일종의 Tag) : 데이터 처리는 쉽지만, 데이터 크기가 커진다. (각 프로그램 마다 XML을 핸들링 할 수 있는 API 존재, API를 바탕으로 XML 데이터를 로딩하여 Tag를 찾아 데이터 추출(파싱))

String xmlMember = "<sembers> +
	"<member>" + 
		"<name>홍하나</name>" +
		"<address>서울</address>" +
		"<phone>010-123-1234</phone>" +
	"</member>" +
	"<member>" + 
		"<name>홍둘이</name>" +
		"<address>경기도</address>" +
		"<phone>010-123-1235</phone>" +
	"</member>" +
	"</members>";

3. 의미 있고, 구분 있는 문자열 형태 (JSON) : 데이터 크기는 작아지나, 표현이 제한적이다. (데이터 표현이 가벼워 웹에서 많이 사용. 각 프로그램 마다 JSON을 핸들링 할 수 있는 API 존재(Gson, JSON-Java 등))

String jsonMember = "[{'name' : '홍하나', 'address' : '서울', 'phone' : '010-123-1234'}," +
{'name' : '홍둘이', 'address' : '경기도', 'phone' : '010-123-1235'}]"

## JSON (JavaScript Object Notation)

  • 플랫폼이나 언어와 무관하게 자료 교환을 목적으로 만들어진 포맷.
  • key-value 쌍으로 이루어짐.
[{key : value, key : value, ... }, {key : value, key : value, ...}, ...]
  • value 에는 string, number, object, array, true, false, null 값 등이 올 수 있다.
  • https://www.json.org/ 
 

JSON

 

www.json.org

## Gson API

  • JSON 을 핸들링 하기 위해 가장 많이 사용하는 API. (구글에서 만든 API)

아래 데이터를 변환한다고 할때.

BookDTO vo = new BookDTO("Java", 15000, "가나", 500);

1. Gson 을 활용하여 Object를 JSON으로 바꾸기 (Object -> JSON)

Gson gs = new Gson();
String json = gs.toJson(vo);

System.out.println(json);

=> Syso 출력결과.
{"title" : "Java", "price" : 15000, "company" : "가나", "page" : 500}

2. Gson 을 활용하여 JSON을 Object 로 바꾸기 (JSON -> Object)

BookDTO dto = gs.fromJson(json, BookDTO.class);
System.out.println(dto.toString());
System.out.println(dto.getTitle() + "\t" + dto.getPrice() + "\t" + dto.getCompany());

=> Syso 출력결과.
{"title" : "Java", "price" : 15000, "company" : "가나", "page" : 500}
BookDTO [title=Java, price=15000, company=가나, page=500]

3. Gson을 활용하여 List를 JSON 으로 바꾸기 (List -> JSON)

List<BookDTO> list = new ArrayList<BookDTO>();
list.add(new BookDTO("Java", 15000, "가나", 500));
list.add(new BookDTO("Python", 12000, "다라", 300));
String gsList = gs.toJson(list);
System.out.println(gsList);

=> Syso 출력결과.
[{"title" : "Java", "price" : 15000, "company" : "가나, "page" : 500},
{"title" : "Python", "price" : 12000, "company" : "다라, "page" : 300}]

4. Gson을 활용하여 JSON을 List 로 바꾸기 (JSON -> List)

List<BookDTO> lst = gs.fromJson(gsList, new TypeToken<List<BookDTO>>(){}.getType());
for (BookDTO v : lst) {
	System.out.println(v);
}

=> Syso 출력결과.
BookDTO [title=Java, price=15000, company=가나, page=500]
BookDTO [title=Python, price=12000, company=다라, page=300]
반응형

+ Recent posts