FE/JavaScript

[JS] JSON

mandelina 2022. 5. 16. 01:11

JSON ?

- JavaScript Object Notation의 약자

 

- 클라이언트와 서버간 HTTP 통신을 위한 텍스트 데이터 포맷

 

- JS에 종속되지 않은 언어 독립형 데이터 포맷

 

- 대부분 프로그래밍 언어에서 사용가능

 

 

JSON 표기 방식

 

- 반드시 큰따옴표로 묶어야 한다. (작은따옴표 불가능)

 

- 값은 객체 리터럴과 같은 표기법을 사용 할 수 있다.

 

- 문자열 역시 반드시 큰 따옴표로 묶는다.

 

 


 

 

 

JSON의 2가지 메서드를 알아보자!  (parse , stringify)

 

 

 

 

JSON.stringify

 

- 객체를 JSON 포맷의 문자열로 반환

 

- 클라이언트가 서버로 객체를 전송하려면 객체를 문자열화 해야한다. (직렬화)

 

 

[예제]

let student = {
  name: 'John',
  age: 30,
  isAdmin: false,
  courses: ['html', 'css', 'js'],
  wife: null
};

let json = JSON.stringify(student);  //문자열로 바꿔준다.

console.log(json); //'{"name":"John","age":30,"isAdmin":false,"courses":["html","css","js"],"wife":null}'
typeof json;  //string

 

 

stringify 메서드를 통해 student를 JSON포맷의 문자열로 변경해보았다.

 

 

[결과] - JSON으로 인코딩된객체와 타입

 

 

 

 


 

원하는 프로퍼티만 직렬화하기 - replacer

 

let json = JSON.stringify(value[, replacer, space])

 

value : 인코딩 하려는 값

 

replacer : JSON으로 인코딩 하길 원하는 프로퍼티가 담긴 배열 (또는 매핑함수)

 

space : 서식 변경 목적으로 사용할 공백 문자 수

 

[예제]

 

let student = {
  name: 'John',
  age: 30,
  isAdmin: false,
  courses: ['html', 'css', 'js'],
  wife: null
};

let json = JSON.stringify(student,['name','age']);  //name과 age만 인코딩
console.log(json);

 

 

name과 age만 JSON으로 인코딩 하기위해 replacer에 넣어주었다.

 

[결과]

 

 

name과 age만 직렬화 된것을 볼 수 있다.

 

 

 


 

가독성을 위한 space

 

space는 가독성을 높이기 위한 용도이므로 단순 전달 목적일 경우 space 없이 직렬화 한다.

 

let json = JSON.stringify(value[, replacer, space])

 

 

[예제]

 

let student = {
  name: 'John',
  age: 30,
  isAdmin: false,
  courses: ['html', 'css', 'js'],
  wife: null
};

let json = JSON.stringify(student,['name','age'],2);
console.log(json);

 

space 인자에 2를 주었기에 공백 문자 2개를 사용하여 들여쓰기 된 값이 나온다.

 

 

[결과]

 

 

"name" 과 "age"앞에 공백문자 2개가 생긴 것을 볼 수 있다.

 

 

 

 


 

 

JSON.parse

 

- JSON 포맷의 문자열을 객체로 변환한다.

 

- JSON 문자열을 객체로 사용하려면 객체화 해야한다. (역직렬화) 

 

 

[예제]

 

위에서 stringify 메서드를 통해 student를 JSON포맷의 문자열로 변경한  json 을 다시 역직렬화 해보자

 

JSON.parse(json) //json은 위에서 직렬화 했던 문자열

그러면 다시 객체로 변환된다.

 

[결과]

 

 

 

 

 

'FE > JavaScript' 카테고리의 다른 글

[JS] DOM (2) - 노드 탐색 , 및 Text 조작  (0) 2022.05.18
[JS] DOM (1) - DOM이란?  (0) 2022.05.17
[JS] Prototype  (0) 2022.05.16
[JS] DOM - Event Flow  (0) 2022.05.12
[JS] this  (0) 2022.05.11