JSON

간단하게 JSON이 무엇인지와 JSON파싱, 직렬화에 대해서 알아보겠습니다.

JSON 문법

http basic카테고리에서 설명한 JSON 포스트링크를 참조 부탁드리겠습니다.
JSON이란? 바로가기


JSON은 세가지 타입을 사용합니다.

  • 단순한 값
  • 객체 : 키-값 쌍으로 표현
  • 배열 : 값, 객체, 다른 배열등을 담는 배열

JSON은 프로그래밍 언어가 아니고 데이터 형식입니다!!
다른 언어에서도 JSON의 파싱등을 지원하며 저희는 주제에 맞게 자바스크립트에서의 파싱, 직렬화에 대해 알아보겠습니다.

JSON 객체

JSON처리 관련한 객체입니다.

stringify() parse() 메서드를 지원하며 이에 대해서 알아보겠습니다.

stringify(), 직렬화

var book = {
    title: "bookname",
    authors: [
        "Kendrick"
    ],
    edition : 3,
    year : 2011
}

var jsonText = JSON.stringify(book);
console.log(jsonText);
//{"title":"bookname","authors":["Kendrick"],"edition":3,"year":2011} 출력

stringify()는 아래와 같은 옵션이 있습니다.

//특정 객체만 받음
var jsonText = JSON.stringify(book, ["title","edition"]);
console.log(jsonText);
//{"title":"bookname","edition":3} 출력

//콜백함수로 컨트롤
var jsonText = JSON.stringify(book, function(key, value){
    switch(key){
        case "authors":
            return value.json(",")
        case "year":
            return 2000;
        default:
            return value;
    }
});

//문자열 들여쓰기, 들여쓰기가 지정되어 저장됩니다.(자동으로 줄바꿈도 합니다.)
var jsonText = JSON.stringify(book, null, 4);

//toJSON() 메서드사용
var book = {
    title: "bookname",
    authors: [
        "Kendrick"
    ],
    edition : 3,
    year : 2011,
    toJSON: function(){
        return this.title;
    }
}

stringify()시 순서는 아래와 같습니다.

  1. toJSON()값이 있으면 호출하여 사용
  2. 두번쨰 매개변수 있다면 필터 적용
  3. 세번째 매개변수가 있다면 그에 따라 형식 조절

파싱옵션

JSON.parse()시 알아서 json스트링이 객체로 파싱됩니다.

만약 파싱옵션을 사용한다면 아래 예제처럼 사용합니다.

var book = {
    title: "bookname",
    authors: [
        "Kendrick"
    ],
    edition : 3,
    year : 2011,
    releaseDate: new Date(2011, 11, 1)
}

var jsonText = JSON.stringify(book);

var bookCopy = JSON.parse(jsonText, function(key, value){
    if(key == "releaseDate"){
        return new Date(value);
    }else{
        return value;
    }
});

위와같이 옵션 사용가능합니다.

마치며

XML도 물론 같은 일을 할 수 있지만 JSON이 훨씬 간결하고 지원도 좋습니다.
직렬화 및 파싱하는 방법을 알아 보았습니다.
다음 포스트에서는 자바스크립트 함수 바인딩에 대해서 간단하게 알아보겠습니다.

이 포스트는 프론트엔드 개발자를 위한 자바스크립트(인사이트)에서 발췌한 내용이 포함되어 있습니다.
내용 전문이 아니기 때문에 자세하게 알고싶으신 분은 프론트엔드 개발자를 위한 자바스크립트(인사이트) 서적을 참고 하시길 바랍니다.