JSON

|

JavaScript Object Notation

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

1. name - value 형태의 쌍

  • name인 애들은 무조건 String이기때문에 반드시 큰따옴표로 묶어줘야한답니다. 
  • 여러 가지 언들에서 object, hashtable, struct로 실현되었다.
  • { String key : String Value}
 { // 중괄호 -> 객체(Object)가 나올거야! 

    "이름": "테스트",

    "나이": 25,

    "성별": "여",

    "주소": "서울특별시 양천구 목동",

    "특기": ["농구", "도술"], // 배열 -> string, 배열, 객체 여도 상관 x

    "가족관계": {"#": 2, "아버지": "홍판서", "어머니": "춘섬"},

    "회사": "경기 수원시 팔달구 우만동"

 }



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

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

3. @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;
}

4. 주의사항

  • JSON은 순수히 데이터 포맷입니다. 오직 프로퍼티만 담을 수 있습니다. 메서드는 담을 수 없습니다.
  • JSON은 문자열과 프로퍼티의 이름 작성시 큰 따옴표만을 사용해야 합니다. 작은 따옴표는 사용불가합니다.
  • 콤마나 콜론을 잘못 배치하는 사소한 실수로 인해 JSON파일이 잘못되어 작동하지 않을 수 있습니다. JSONLint같은 어플리케이션을 사용해 JSON 유효성 검사를 할 수 있습니다.
  • JSON은 JSON내부에 포함할 수 있는 모든 형태의 데이터 타입을 취할 수 있습니다. 즉, 배열이나 오브젝트 외에도 단일 문자열이나 숫자또한 유효한 JSON 오브젝트가 됩니다.
  • 자바스크립트에서 오브젝트 프로퍼티가 따옴표로 묶이지 않을 수도 있는 것과는 달리, JSON에서는 따옴표로 묶인 문자열만이 프로퍼티로 사용될 수 있습니다.

5. 중요 메소드

JSON.parse()

인자로 전달된 문사열을 자바스크립트의 데이터로 변환한다.

JSON.stringify()

인자로 전달된 자바스크립트의 데이터를 문자열로 변환한다.

 

상단은 JSON 형식 / 하단은 stringfy 한 형식

 

6. JSON이 필요한 이유

'JavaScript' 카테고리의 다른 글

객체 얕은 복사(shallow copy)와 깊은 복사(deep copy)  (0) 2020.03.18
호이스팅(Hoisting)  (0) 2020.01.21
변수 선언 방법  (0) 2020.01.12
정규표현식의 개념과 기초 문법  (4) 2019.09.18
innerHTML과 outerHTML 차이  (0) 2019.09.18
And