JSON ?
- Java Script Object Noation (자바 스크립트 객체 표기법)
- Java Script에서 객체를 만들 때 사용하는 경량의 표현식 { key : value }를 의미한다. (자바스크립트 문법에서 파생)
- 텍스트 형식이 Java Script와 유사할 뿐 독립적인 형태로 되어 있어 프로그래밍 언어에 종속되지 않고 대부분의 언어와 호환 가능하다.
- 서버와 클라이언트의 데이터 교환 목적으로 주로 사용한다.
- XML과 비교했을 때 더욱 가볍고 읽기 편하다.
1) 자바스크립트에서 Object를 JSON으로 변환하는 방법.
const baby = {
name: "ddoddi",
sex: "male",
size: "big(?)",
birthday: new Date(),
crying: () => {
console.log(`The ${name} cries loudly.`);
},
};
console.log(baby);
//{name: 'ddoddi', sex: 'male', size: 'big(?)',
//birthday: Sat Jan 15 2022 19:05:27 GMT+0900 (한국 표준시), crying: ƒ}
객체인 아기 또띠를 생성했다.
아기 또띠의 정보를 JSON으로 변환해보자.
stringify API를 사용하면 된다.
let jsonpractice = JSON.stringify(baby);
console.log(jsonpractice);
// {"name":"ddoddi","sex":"male","size":"big(?)","birthday":"2022-01-15T10:05:27.653Z"}
key와 value 값으로 깔끔하게 변환된 것을 확인할 수 있다.
다만 중요한 것은 JSON으로 변환 가능한 것은 null, number, string, array, object, boolean 6가지 뿐이기 때문에 함수로 지정한 crying()는 아예 전달되지 않았고 birthday는 String으로 변환되었다.
let jsonpractice = JSON.stringify(baby, function (key, value) {
console.log(`key: ${key}, value: ${value}`);
if (key === "sex") {
return (value = "female");
} else {
return value;
}
});
console.log(jsonpractice);
// {"name":"ddoddi","sex":"female","size":"big(?)","birthday":"2022-01-15T10:34:17.597Z"}
// 아래와 같이 간단하게 작성 가능하다
let jsonpractice = JSON.stringify(baby, (key, value) => {
console.log(`key: ${key}, value: ${value}`);
return key === "sex" ? "female" : value;
});
console.log(jsonpractice);
// // {"name":"ddoddi","sex":"female","size":"big(?)","birthday":"2022-01-15T10:34:17.597Z"}
위와 같이 함수를 이용해 특정 키와 값만을 조절해줄 수 있다.
2) JSON을 자바스크립트의 Object로 변환하는 방법.
const objpractioce = JSON.parse(jsonpractice);
console.log(objpractioce);
//{name: 'ddoddi', sex: 'female', size: 'big(?)', birthday: '2022-01-15T10:42:47.529Z'}
parse API를 사용하자 순식간에 다시 객체로 변환된 것을 확인할 수 있다.
그런데 문제는 birthday에 지정해뒀던 Date 오브젝트가 String으로 변환된 상태에서 다시 돌아오지 않는다..
함수처럼 애초에 변환이 불가능한 친구는 어쩔 수 없지만 객체는 String에서 다시 Object로 변환해주면 원상복귀가 가능하다.
const objpractioce = JSON.parse(jsonpractice, (key, value) => {
console.log(`key:${key}, value:${value}`);
return key === "birthday" ? new Date(value) : value;
});
console.log(jsonpractice); // {"name":"ddoddi","sex":"female","size":"big(?)","birthday":"2022-01-15T10:51:30.656Z"}
console.log(objpractioce.birthday.getDate()); // 오늘 날짜
JSON으로 변환할 때와 큰 차이 없이 쉽게 가능하다.
'Language & Framework > JavaScript' 카테고리의 다른 글
바닐라 자바스크립트로 data 속성 사용하여 탭(Tab) 기능 만들기. (0) | 2022.02.24 |
---|---|
자바스크립트 정규식 이용하여 로그인 유효성 검사. 대문자가 들어간 패스워드만 전송하기. (0) | 2022.02.23 |
자바스크립트 기초. Array (2) - 배열 API (0) | 2022.01.19 |
자바스크립트 기초. Array (배열) (1) (0) | 2022.01.17 |
자바스크립트 기초. Object (0) | 2022.01.15 |