JSON이란 무엇일까??

No Image

지난 번 포스팅에서 Restful API관하여 자세히 알아보다가 공개된 OPEN API 대부분 JSON을 활용하여 데이터를 주고 받는 다는 것을 알았다. 위 포스팅에서는 JSON의 개념과 어떠한 형식에 대해 좀 더 자세히 알아보고 JSON에 관련된 Library가 무엇이 있는지 알아본다.

NO Image

1. JSON(JavaScript Object Notation)이란?

  • JSON은 경량(Lightweight)의 DATA-교환 형식
  • Javascript에서 객체를 만들 때 사용하는 표현식을 의미한다.
  • JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서, 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용한다.
  • 특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리를 제공한다.

2. JSON(JavaScript Object Notation) 형식

2.1 name-value 형식의 쌍(pair)

  • 여러 가지 언들에서 object, hashtable, struct로 실현되었다.
  • { String key : String Value}
{
  "firstName": "Kwon",
  "lastName": "YoungJae",
  "email": "kyoje11@gmail.com"
}

2.2 값들의 순서화된 리스트 형식

  • 여러 가지 언어들에서 배열(Array), 리스트(List)로 실현되었다.
  • [ value1, value2, ….. ]
{
  "firstName": "Kwon",
  "lastName": "YoungJae",
  "email": "kyoje11@gmail.com",
  "hobby": ["puzzles","swimming"]
}

3. JSON Library - Jackson(Java) 적용하기

  • JSON은 쉽게 객체(Object)로 바꿔주거나 객체(Object)를 JSON으로 바꿔주는 Library가 대부분 언어에서 존재한다.
  • Jackson : https://github.com/FasterXML/jackson
  • Spring Framework 를 사용하여 예시를 들어보이겠다.

3.1 Maven의 pom.xml의 추가하기

  • Jackson이라고 치면 가장 위에 보이는 Jackson Databind를 선택한다.

NO Image

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.1</version>
</dependency>

3.2 @ResponseBody를 사용하여 JSON형태로 응답하기

  • Controller를 통해 View로 넘어가지 않고 데이터(JSON OR XML)를 넘겨 줄 수 있다.
  • Spring 3.1에서부터 을 사용하면 HttpMessageConverter가 자동으로 등록된다.
  • @ResponseBody : Return 값은 View를 통해서 출력되는 것이 아니라 HTTP Response Body에 직접쓰여진다.

  • annotation-driven 활성화 하기
<mvc:annotation-driven></mvc:annotation-driven>
  • RestfulController의 getUserList 코드
@RequestMapping(value = "/users", method = RequestMethod.GET)
@ResponseBody
public Map getUserList(){
  List<Offer> userList = offersService.getCurrent(); // DB에 등록된 User List를 받아온다.
  Map result = new HashMap();

  result.put("result",Boolean.TRUE);
  result.put("data",userList);

  return result;
}

3.3 서버를 작동시켜 확인해보기.

  • RequestMapping된 주소인 http://localhost:8080/users 확인해보자.

  • 결과 모습 : 잘 도착했지만 보기가 불편하다.

NO Image

3.4 PostMan을 통해 예쁘게 보자.

NO Image

NO Image

Reference

0%