JS JSON
업데이트:
1. HTTP를 활용한 통신 구조
1-1. HTTP 통신방법
- HTTP(HYperText Transfer Protocol)은 client-server 간에 데이터를 송수신할때 필요한것을 정의한 것
- client는 서버에 request를 날리고 server는 이에 response를 해줌
1-2. AJAX 기술
- 문서,이미지,HyperText 등의 resource를 보통 AJAX 기술을 활용
- XMLHttpRequest Object를 활용함 (Browser API에서 제공)
- 최근 Browser API 에 fetch()가 추가됨 (IE에서는 지원되지 않음) .
- 즉, XMLHttpRequest, fetch() API를 통해 client-server Data 송수신 가능
1-3. AJAX 기술 사용시 형식
- XML 형식을 많이 사용했음, but 가독성, 파일사이즈도 너무큰 단점
- 현재, XML의 단점을 보완해주는 JSON(Javascript Obeject Notation) 활용
1-4. JSON
- ECMAScript 3rd(1999)부터 사용되기 시작함
- 형식: Object {key:value}
- 브라우저 뿐만아니라 모바일에서도 활용됨
- 장점:
- Programming language나 플랫품에 상관없이 사용 가능
- 데이터를 직렬화(serialization)하여 데이터를 전송할수 있음
- 가독성이 좋고 간단한 포멧으로 이루어져있음
2. JSON(JavaScript Object Notation)
2-1. Object to JSON
<script>
// stringify(obj)
let json = JSON.stringify(true);
console.log(json);
const rabbit = {
name: 'Hello',
color: 'white',
size: null,
birthDate: new Date(),
jump: () => { //함수는 JSON으로 출력되지 않음
console.log('${this.name} can jump!');
},
};
json= JSON.stringify(rabbit);
console.log(json);
json= JSON.stringify(rabbit);
console.log(json,['name', 'color']); //원하는 목록만 뽑아 낼수도 있음
json= JSON.stringify(rabbit, {key, vlaue} => { //callback 함수를 활용하여 좀더 세밀하게 통제 가능
console.log('key: ${key}, value: ${value}');
retrun key === 'name' ? 'ellie' : value;
});
</script>
2-2. JSON to Obejct
<script>
// parse(json)
console.clear();
json= JSON.stringify(rabbit);
console.log(json);
const obj = JSON.parse(json, {key, value} => {
console.log('key: ${key}, value: ${value}');
return key === 'birthDate' ? new Date(value) : value;
});
console.log(obj);
rabbit.jump();
console.log(rabbit.birthDate.getDate());
console.log(obj.birthDate.getDate());
</script>
2-3. 유용한 JSON 관련 정보
- JSON Diff Checker: http://www.jsondiff.com/
- JSON Beutifier/editor: https://jsonbeautifier./org/
- JSON Parser: https://jsonparser.org/
- JSON Validator: https://tools.learningcontainer.com/json-validator/