JavaScript/기초

자바스크립트[기초] JSON | JSON.stringify | JSON.parse

뿌비 2022. 4. 18. 20:10
728x90

JSON

  • 클라이언트와 서버 간의 HTTP 통신을 위한 텍스트 데이터 포맷이다.
  • 자바스크립트에 종속되지 않는 언어 독립형 데이터 포맷이다.
  • JSON은 자바스크립트의 객체 리터럴과 유사하게 키와 값으로 구성된 순수한 텍스트이다.
  • JSON의 키는 반드시 큰따옴표(작은따옴표는 사용 불가)로 묶어야 한다.
  • 값은 객체 리터럴과 같은 표기법을 그대로 사용할 수 있다.
  • 하지만 문자열은 반드시 큰따옴표(작은따옴표는 사용 불가)로 묶어야 한다.
{
	"name" : "Lee",
    "age" : 20,
    "alive" :true,
    "hobby" : ["traveling", "tennis"]
}

JSON.stringify

  • 객체를 JSON 포맷의 문자열로 변환한다.
  • 클라이언트가 서버로 객체를 전송하려면 객체를 문자열화 해야 하는데 이를 직렬화라 한다.
  • 객체뿐만 아니라 배열로 JSON 포맷의 문자열로 변환한다.

 

 

const obj ={
	name : 'Lee',
    age : 20,
    alive : true,
    hobby : ['traveling' , 'tennis']
};

// 객체를 JSON 포맷의 문자열로 변환한다.
const json = JSON.stringify(obj);
console.log(typeof json, json );
// string {"name" : "Lee", "age": 20, "alive": true, "hobby": ["traveling" , "tennis"]}

//객체를 JSON 포맷의 문자열로 변환 하면서 들여쓰기 한다.
const prettyJson = JSON.parse(obj, null, 2);
console.log(typeof prettyJson, prettyJson);
/*
	string {
		"name" : "Lee", 
        "age": 20,
        "alive": true, 
        "hobby": [
        	"traveling",
            "tennis"
           ]
   	}
*/

const todos = [
	{ id : 1 , content: 'HTML', completed: false },
    { id : 2 , content: 'CSS', completed: true },
    { id : 3 , content: 'JavaScript', completed: false }
];

// 배열을 JSON 포맷의 문자열로 변환한다.
const json = JSON.stringify(todos, null, 2);
console.log(typeof json, json);

/*
	string [
		{
        	"id" : 1, 
            "content" : "HTML",
            "completed" : false 
        },
        {
        	"id" : 2, 
            "content" : "CSS",
            "completed" : true
        },
        {
        	"id" : 3, 
            "content" : "JavaScript",
            "completed" : false 
        }
	]	
*/

JSON.parse

  • JSON 포맷의 문자열을 객체로 변환한다.
  • 서버로부터 클라이언트에게 전송된 JSON 데이터는 문자열이다.
  • 문자열을 객체로서 사용하려면 JSON 포맷의 문자열을 객체화해야 하는데 이를 역직렬화 라 한다.
  • 배열이 JSON 포맷의 문자열로 변환되어 있는 경우 JSON.parse는  문자열을 배열 객체로 변환한다.
  • 배열의 요소가 객체인 경우 배열의 요소까지 객체로 변환한다.
  • https://www.w3schools.com/js/js_json_parse.asp  (참고)
const obj ={
	name : 'Lee',
    age : 20,
    alive : true,
    hobby : ['traveling' , 'tennis']
};

// 객체를 JSON 포맷의 문자열로 변환한다.
const json = JSON.stringify(obj);

//JSON 포맷의 문자열을 객체로 변환한다.
const parsed = JSON.parse(json);
console.log(typeof parsed, parsed );
// object {name: "Lee", age: 20, alive: true, hobby: ["traveling" , "tennis"]}


const todos = [
	{ id : 1 , content: 'HTML', completed: false },
    { id : 2 , content: 'CSS', completed: true },
    { id : 3 , content: 'JavaScript', completed: false }
];

// 배열을 JSON 포맷의 문자열로 변환한다.
const json = JSON.stringify(todos);

//JSON 포맷의 문자열을 배열로 변환한다. 배열의 요소까지 객체로 변환된다.
const parsed = JSON.parse(json);
console.log(typeof parsed, parsed );

/*
	object [
	{ id : 1 , content: 'HTML', completed: false },
    { id : 2 , content: 'CSS', completed: true },
    { id : 3 , content: 'JavaScript', completed: false }
]	
*/
728x90