![[JavaScript]JSON parse 와 JSON stringify 차이 [JavaScript]JSON parse 와 JSON stringify 차이](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
JSON이란?
JSON(JavaScript Object Notation)은 데이터를 객체로 표현하는 형식으로 JavaScript의 객체 형식을 모방합니다. 처음에는 JavaScript 전용으로 만들어졌지만, 현재는 Java, Python, Go, C#과 같은 다른 프로그래밍 언어에서도 JSON 형식을 사용하여 클라이언트-서버 간 데이터를 공유하는데 사용되고 있습니다.
이번 포스팅에서는 JSON.parse와 JSON.stringify의 차이를 설명합니다.
JSON.parse
JSON.parse는 JSON 문자열을 파싱합니다.
파싱이란?
문장을 문법적 부분으로 나누고 나누어진 부분을 식별하는 것입니다. JSON은 문장을 <key> : <value> 관계로 식별합니다.
클라이언트-서버 간 통신에서 서버가 클라이언트에게 전달하는 데이터는 문자열입니다. JSON.parse()를 사용하면, 데이터를 파싱 하여 JavaScript 객체로 변환합니다. 파싱 하기 전에는 단순 문자열이며, 문자열에 인코딩 된 데이터에는 접근할 수 없습니다. 데이터에 접근하기 위해서는 JSON.parse()의 결과인 JavaScript Object를 이용합니다.
다음은 JSON 문자열을 파싱 하는 코드입니다.
const jsonStr = '{"Age": "30"}';
const obj = JSON.parse(jsonStr);
console.log(obj);
실행 결과
![[JavaScript]JSON parse 와 JSON stringify 차이 - undefined - JSON.parse [JavaScript]JSON parse 와 JSON stringify 차이 - undefined - JSON.parse](https://blog.kakaocdn.net/dna/b1U3oe/btrmKDWLDpD/AAAAAAAAAAAAAAAAAAAAAIItihRCI23nBeN4uJMFFuHn4zLK5POnxfes1T5Tn-tT/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1759244399&allow_ip=&allow_referer=&signature=huu3ROlO%2B36UT7bq7fGCoJ3Ph5E%3D)
JSON.parse() 함수의 reviver 매개변수를 사용하면, Object를 반환하기 전에 데이터를 변환(가공)할 수 있습니다.
다음은 reviver 매개변수를 사용하는 코드입니다.
const jsonStr = '{"Age": "30", "Name": "Kang"}';
const obj = JSON.parse(jsonStr, (key, value) => key ==='Age' ? value * 2 : value);
console.log(obj);
실행 결과
![[JavaScript]JSON parse 와 JSON stringify 차이 - undefined - JSON.parse [JavaScript]JSON parse 와 JSON stringify 차이 - undefined - JSON.parse](https://blog.kakaocdn.net/dna/AeugE/btrmMgapYSi/AAAAAAAAAAAAAAAAAAAAAA4sd0UsFXztqmKxbGUQ611s6P6XnNxf-6_csrsOAvbV/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1759244399&allow_ip=&allow_referer=&signature=CPhLLxp5TuCt115x%2FaTtpu8d9BU%3D)
key가 'Age'인 경우 value에 * 2 연산을 하며, key가 'Age'가 아닌 경우 value를 변환하지 않습니다.
JSON 문자열에서 뒤에 쉼표가 있는 경우 JSON.parse()에서 구문 오류가 발생합니다.
![[JavaScript]JSON parse 와 JSON stringify 차이 - undefined - JSON.parse [JavaScript]JSON parse 와 JSON stringify 차이 - undefined - JSON.parse](https://blog.kakaocdn.net/dna/k6zwp/btrmEift4Rj/AAAAAAAAAAAAAAAAAAAAAMaN-rV_7PVnZqIS5HlEtzo8p1RGU2cM9VBbQfYa7_Mq/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1759244399&allow_ip=&allow_referer=&signature=AU%2FpwhjrCghBOpnPu4jz2rdiNU4%3D)
JSON.stringify
JSON.stringify는 JavaScript Object를 JSON 문자열로 변환합니다.
JSON.parse가 서버가 클라이언트에게 전달하는 데이터를 파싱하는 용도였다면, JSON.stringify는 클라이언트가 서버에게 데이터를 전송할 때 사용됩니다.
다음은 JavaScript Object를 JSON 문자열로 변환하는 코드입니다.
const obj = {Age: 30, Name: "Kang"};
const jsonStr = JSON.stringify(obj);
console.log(jsonStr);
실행 결과
![[JavaScript]JSON parse 와 JSON stringify 차이 - undefined - JSON.stringify [JavaScript]JSON parse 와 JSON stringify 차이 - undefined - JSON.stringify](https://blog.kakaocdn.net/dna/FYuTA/btrmK0xCUQo/AAAAAAAAAAAAAAAAAAAAAH6JEoV3WOrCTn76wQJgDNxKeF4Zkw2hFR9TBqs9rbM5/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1759244399&allow_ip=&allow_referer=&signature=Op6t5WN8AI%2BdmiYgn3KVzn%2BVY%2B4%3D)
JSON.stringify() 함수는 세 개의 매개변수를 가집니다.
첫 번째 매개변수는 JSON 문자열로 변환할 Object입니다.
두 번째 매개변수는 replacer 함수입니다.
replacer 함수는 key와 value 두 개의 매개변수를 받으며, 필터링 용도로 사용할 수 있습니다.
replacer 함수에서 undefined를 반환하면, 해당 속성은 JSON 문자열에 포함되지 않습니다.
다음은 JSON.stringify() 함수의 replacer 함수를 사용한 코드입니다.
const obj = {Age: 30, Name: "Kang"};
function replacerFunc(key, value) {
if(key === "Name") {
return undefined;
}
return value;
}
const jsonStr = JSON.stringify(obj, replacerFunc);
console.log(jsonStr);
실행 결과
![[JavaScript]JSON parse 와 JSON stringify 차이 - undefined - JSON.stringify [JavaScript]JSON parse 와 JSON stringify 차이 - undefined - JSON.stringify](https://blog.kakaocdn.net/dna/eohhDW/btrmKi6A4ty/AAAAAAAAAAAAAAAAAAAAANm6XGcAP28XZx6F5p1axJrYZFKV9HQrIxToKEFd4T3A/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1759244399&allow_ip=&allow_referer=&signature=o6vqabNGN1sO1GGfDoLL7vcZ07g%3D)
세 번째 매개변수는 JSON 문자열의 가독성을 위해 공백을 삽입하는데 사용됩니다. 세 번째 매개변수가 생략되거나 빈 문자열("") 또는 null이면, 공백이 추가되지 않습니다.
const obj = {Age: 30, Name: "Kang"};
const jsonStr = JSON.stringify(obj, null, ' ');
console.log(jsonStr);
실행 결과
![[JavaScript]JSON parse 와 JSON stringify 차이 - undefined - JSON.stringify [JavaScript]JSON parse 와 JSON stringify 차이 - undefined - JSON.stringify](https://blog.kakaocdn.net/dna/b7naiA/btrmK7QRTr4/AAAAAAAAAAAAAAAAAAAAANGmVJHVHcDFdcOQQhsdA2qLAi-YNVs0TJvTT3ZVOVWJ/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1759244399&allow_ip=&allow_referer=&signature=maqDmwBqCxzXgTUBdXrBf%2FlmA0o%3D)
'JavaScript > JavaScript 문법' 카테고리의 다른 글
[JavaScript]객체(Object)의 freeze(), seal() 함수의 차이점 (0) | 2021.12.06 |
---|---|
[JavaScript]객체(Object)가 비어있는지 체크하는 방법 (2) | 2021.12.02 |
[JavaScript]JSON.parse 및 JSON.stringify를 객체 복사에 사용하면 안되는 이유 (0) | 2021.12.02 |
[JavaScript]console 객체 사용 방법 (0) | 2021.11.29 |
[JavaScript]Object.assign() 함수와 Object.create()의 차이점 (0) | 2021.11.16 |
댓글