엄밀히 말하면 JSON은 자바스크립트가 아닌, 어떤 언어에도 종속되지 않는 데이터 교환 포맷이지만 난 JS만 사용하고 JSON도 JS에서만 사용하므로 Javascript 카테고리에 글을 씀.
이 글을 쓰는 이유는 오늘 회사에서 JSON으로 전달되는 변수를 다룰 때, 삼항연산자로 undefined를 사용했다가, JSON에는 undefined를 사용할 수 없다는 에러를 만났기 때문
(a ? a : undefined)
방금 말했듯이 JSON은 자바스크립트가 아닌, 컴퓨터 언어와는 별개의 기능을 하는 데이터 교환 포맷이다.
파이썬,C언어,Javascript 등 문법이 다른 언어들에서도 공통되는 문법이 있다.
바로 문자열!
모든 코드 내용은 문자열로 바꾸어, 즉 JSON화 하여 다른 언어를 사용하는 플랫폼과 교환할 수 있는 것이다.
예를들면 대부분의 REST API들은 JSON 형태의 데이터를 응답한다. 서로 JSON을 교환하기에, JAVA로 이루어진 백엔드와 Javascript로 이루어진 프론트엔드가 서로 네트워크 통신을 할 수 있는것이다.
문제는, JSON은 Javascript가 아니고, 그렇기에 Javascript로 JSON을 사용할 때 유의해야할 점이 있다는 것이다.
객체와 배열
속성의 이름은 반드시 큰 따옴표로 표시된 문자열이어야 함.
{ name : 'june' }//이건 Javascript이다. JSON에서는 사용할 수 없다.
{ "name" : "june" } //이렇게 작성해야 JSON에서 사용할 수 있음.
숫자
소수점 뒤에는 적오도 한 자릿수가 뒤따라야 한다. NaN과 Infinity는 지원하지 않는다.
=> JSON으로 전달되는 변수에는 NaN이나 Infinity를 할당하면 안된다!
주석
주석을 사용할 수 없음.
package.json에서 '//'를 써 보자. 아마 빨간줄이 뜰 껄
undefined 미지원
오늘 내가 겪은 에러, JSON으로 전달되는 변수에는 undefined를 할당하면 에러가 난다.
나는 null을 할당하여 해결했다.
JSON메서드
- JSON.parse() : 문자열을 JSON으로서 구문 분석, 쉽게 생각해서 JSON화된 문자열을 원래대로 되돌린다.(보통 객체형태)
- JSON.stringify() : JSON문자열을 반환. 그냥 문자열화 시킨다고 생각. 썩 좋은 방식은 아니지만 객체 전체를 깊은복사 할 때 사용하기도 한다. (문자열은 값 자체를 복사하기 때문에, 문자열화 한 후에 다시 JSON.parse()를 사용하면 다른 메모리 주소를 참조하는 객체가 됨)
코드스테이츠 교육생때 작성했던 JSON 블로깅보다 잡설명이 없는 말끔한 글을 쓴 것 같다.(고수분들이 보면 아직 허접하겠지만?)
참고자료
https://www.daleseo.com/js-window-fetch/
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/JSON
'개발 > Javascript' 카테고리의 다른 글
Chart.js (0) | 2022.05.12 |
---|---|
Set : 배열 중복제거하기 (0) | 2022.05.01 |
Class는 Object 찍어내는 기계(코딩애플) (0) | 2022.01.15 |
프로토타입 두서없이 정리 (0) | 2022.01.04 |
DOM (0) | 2022.01.01 |