코딩동강

[JS-엘리] JS 10강 - JSON 개념 정리 와 활용방법 | (JavaScript ES6)

1,307

동영상 수강 전 본문 내용 스캔.

동영상 수강 후 본문 내용 스캔.

안 보고 직접 코드 타이핑 하기.


 

JSON 이해에 필요한 기본 개념

 

HTTP (HyperText Transfer Protocol)

브라우저와 서버간 데이터 (링크, 텍스트, 이미지 등) 통신 규약

 

AJAX (Asynchronous Javascript And XML)

전체 페이지 새로고침 않고도 일부 데이터 전송 가능.

 

XML (Extensible Markup Language)

데이터 전송에 유리하도록 확장된 마크업 언어. 태그명 자유롭게 명명 가능.

 

XHR (XMLHttpRequest)

브라우저 API중 하나. /AJAX에서 데이터 교환할 때 사용하는 Object.

 

JSON (JavaScript Object Notation) 

JS 객체 명세서. 데이터를 저장・교환할 때 유용. (ECMAScript 3rd 1999)

object 형태 : {key:value, key:value, ...}

json 형태 : {"key":"value", "key":"value",...}

 

fetch() API : 데이터 교환 위해 최근 등장. (IE는 지원 X)

 

※ 전송 데이터 형태 : XML・JSON

※ 데이터 전송 방법 : XMLHttpRequest ・ fetch() 이용해 서버와 통신.

 

JSON 특징

 

1. 가장 간단한 데이터 교환 포맷.

2. 가벼운 텍스트 기반 구조.

3. 읽기 편함. (Easy to read)

4. 이름:값 형식. (Key:value pairs)

5. 데이터 전송에 편리한 형식으로 저장 (= 직렬화)하는데 사용.

6. 독립적인 프로그램 언어・플랫폼


 

※ JSON 공부 핵심 

serialize (직렬화) : JSON.stringify(obj)

deserialize(직렬화 해제) : JSON.parse(json)

 

※ VScode 에디터에서 JSON API 확인 

api 위에 마우스커서 올린 후 Ctrl 키 눌러 링크 활성화 시킨 후, 해당 링크를 클릭.

 

 

1. Object → JSON 변환 : JSON.stringify(obj)

 

// JSON

// JavaScript Object Notation


// 1. Object → JSON 변환 :

// JSON.stringify(obj)


let json;


// 예1

json = JSON.stringify(true);

console.log(json); // true


// 예2

json = JSON.stringify(['apple', 'banana']);

console.log(json); // ["apple","banana"]


// 예3

const rabbit = {

  name: 'tori',

  color: 'white',

  size: null,

  // symbol: Symbol('id'), // JSON에 포함 X

  bithDate: new Date(), // 변환되어 포함.

  jump: () => {

    // 화살표 함수 경우 JSON에 포함 X, 만약 일반함수로 표현 시 JSON에 포함 O

    console.log(`${name} can jump!`);

  },

};

json = JSON.stringify(rabbit);

console.log(json); // {"name":"tori","color":"white","size":null,"bithDate":"2020-07-31T20:28:26.519Z"}


json = JSON.stringify(rabbit, ['name']);

console.log(json); // {"name":"tori"}


json = JSON.stringify(rabbit, ['name', 'color']);

console.log(json); // {"name":"tori","color":"white"}


json = JSON.stringify(rabbit, ['name', 'color', 'size']);

console.log(json); // {"name":"tori","color":"white","size":null}


json = JSON.stringify(rabbit, (key, value) => {

  console.log(`key: ${key}, value: ${value}`);

  return value; // 하단 주석의 결과값 참고.

});

console.log(json); // {"name":"tori","color":"white","size":null,"bithDate":"2020-07-31T21:03:46.990Z"}


/* 

※ 결과값: 

key: , value: [object Object]

key: name, value: tori

key: color, value: white

key: size, value: null

key: bithDate, value: 2020-07-31T21:08:45.393Z

key: jump, value: () => {

    // 화살표 함수 경우 JSON에 포함 X, 만약 일반함수로 표현 시 JSON에 포함 O

    console.log(`${name} can jump!`);

  }


※ 주의: 

처음엔 rabbit 객체 자체 정보 출력되고, 두 번째부터 rabbit 객체 안 key:value 출력.


※ Tip

rabbit 객체에서 jump 메서드를 화살표 함수 대신 일반 함수로 선언 시 name에 접근 가능.

객체의 메서드를 화살표 함수로 선언할 경우 this는 전역객체를 가리켜서 window가 출력됨.

(예제) 

jump: function() { console.log(`${this.name} can jump!`); } 

또는 

jump() { console.log(`${this.name} can jump!`); }

By. 유튜버 Jerome 님

*/


json = JSON.stringify(rabbit, (key, value) => {

  console.log(`key: ${key}, value: ${value}`);

  return key === 'name' ? 'ellie' : value;

});

console.log(json); // {"name":"ellie","color":"white","size":null,"bithDate":"2020-07-31T21:21:17.267Z"}

 

결과보기

 

 

2. JSON → Object : JSON.parse(json)

 

// 2. JSON → Object

// JSON.parse(json)

console.clear();


json = JSON.stringify(rabbit);

console.log(json);


const obj = JSON.parse(json);

console.log(obj); // {name: "tori", color: "white", size: null, birthDate: "2020-07-31T21:49:25.781Z"}


rabbit.jump(); // can jump!

// obj.jump(); // 에러 발생. (∵ JSON에서 변환된 객체엔 jump 메서드 포함 X)


console.log(rabbit.birthDate.getDate()); // 1  (※ 코드 테스트한 날의 일자)

// console.log(obj.birthDate.getDate()); // 에러 발생. (∵ JSON에서 변환된 객체 경우, birthDate 값은 문자열이므로)


const obj2 = JSON.parse(json, (key, value) => {

  console.log(`key: ${key}, value: ${value}`);

  return value;

});

/* 

결과값:

key: name, value: tori

json.js:96 key: color, value: white

json.js:96 key: size, value: null

json.js:96 key: birthDate, value: 2020-07-31T23:34:05.781Z

json.js:96 key: , value: [object Object]

*/


const obj3 = JSON.parse(json, (key, value) => {

  console.log(`key: ${key}, value: ${value}`);

  return key === 'birthDate' ? new Date(value) : value;

});

/*

결과값:

key: name, value: tori

json.js:101 key: color, value: white

json.js:101 key: size, value: null

json.js:101 key: birthDate, value: 2020-07-31T23:34:05.781Z

json.js:101 key: , value: [object Object]

*/

console.log(obj3.birthDate.getDate()); // 1

 

결과보기



분류 제목
PHP7-서기 PHP7 6강 - Arrays (배열) 정의/출력
PHP7-서기 PHP7 5강 - FOR 반복문
PHP7-서기 PHP7 4강 - ELSE IF 조건문 (수우미양가 출력)
PHP7-서기 PHP7 3강 - PHP 환경변수 / IF조건문
PHP7-서기 PHP7 2강 - PHP 변수 사용법 (GET 방식)
PHP7-서기 PHP7 1강 - 내 컴퓨터를 서버로(xmapp)와 php.ini의 설정
JS-엘리 JS 14강 - 자바스크립트 함수 기본편 | JavaScript ES6
JS-엘리 JS 13강 - 비동기의 꽃 JavaScript async 와 await 그리고 유용한 Promise API…
JS-엘리 JS 12강 - Promise 개념부터 활용까지 JavaScript Promise | (JavaScript …
JS-엘리 JS 11강 - 비동기 처리의 시작 콜백 이해하기, 콜백 지옥 체험 JavaScript Callback | …
JS-엘리 JS 10강 - JSON 개념 정리 와 활용방법 | (JavaScript ES6)
JS-엘리 JS 9강 - 유용한 10가지 배열 함수들. Array APIs 총정리 | ( JavaScript ES6)
JS-엘리 JS 8강 - 배열 개념과 APIs 총정리 | (JavaScript ES6 )
JS-엘리 JS 7강 - 오브젝트 넌 뭐니? | (JavaScript ES6)
JS-엘리 JS 6강 - 클래스・오브젝트 차이점(class vs object), 객체지향 언어 클래스 정리 | (Jav…
8/47
목록
  • 채팅방
  • 필독
1. 채팅창 헤드에서 접속자 확인 2. 닉네임 클릭해 1:1 채팅 가능 3. 닉네임 클릭해 귓속말 가능 4. 닉네임 클릭해 호출하기 가능 5. 우하단 클릭해 환경 설정 가능 6. 의뢰글 작성 후 의뢰 상담 가능 7. 질문글 작성 후 질문 상담 가능 8. 채팅방에 개인정보 입력 금지 9. 채팅방에 광고 욕설 비방 금지
 홈  PC버전 로그인 일본어
웹디자인언어
서버관리언어
고급코딩언어
그누보드
제작의뢰
Q&A
커뮤니티
웹유틸
회원센터
홈짱 PC버전 로그인