본문 바로가기
지금, 개발하기/Javascript

Javascript] JSON과 JavaScript object 차이점

by Seaco :) 2021. 9. 29.

JSON과 JavaScript object 는 비슷하지만 완전히 다른 녀석입니다. 생긴게 비슷하다니보니 이 둘을 헷갈리기 쉬운데요. 엄연히 다른 녀석들이니 차이점을 살펴보도록 하겠습니다. 

① JavaScript object : JavaScript Engine 메모리 안에 있는 데이터 구조
② JSON: 객체의 내용을 기술하기 위한 text 파.일.

예시를 한번 살펴보겠습니다. 
json변수는 JSON형식으로 쓰여졌고, obj는 JavaScript object 형식으로 쓰여졌습니다. 

const json=`{"data":[{"name":"jigeam","age":"25", "course":["classA","12:00"]}]}`;

const obj = {data:[{name:'jigeam', age: 25, course:['classA','12:00']}]};

console.log(typeof(json))	// string
console.log(typeof(obj))	// object

 

둘의 타입을 비교해보면 json은 string으로, obj는 object로 나오는 것도 확인할 수 있네요.




차이점

- JSON은 모든 프로퍼티는 큰따옴표(")로 묶어주어야한다.
- JSON은 함수를 값으로 할당할 수 없다.
- JSON은 '.json'이라는 확장자명을 갖는 실제 파일이다.
- JSON의 type은 string이다.

 

Q. 이 둘을 구별해서 써야할 때는 언제죠? 

서버와 클라이언트가 데이터를 주고받을 때는 JSON 파일을 사용하는데요.
이 때문에 서버와 통신을 하기 위해서는 object를 직렬화해서 json으로 바꾸는 법과 직렬화된 JSON을 obeject로 바꾸는 법을 꼭 알아야합니다. JSON.parse()는 JSON을 object로 변환해주는 메소드이고, JSON.stringify()는  object를 JSON으로 변환해주는 메소드입니다.

① JSON.stringify(): JavaScript object → JSON으로 변환
② JSON.parse() :  JSON → JavaScript object로 변환

 

① JSON.stringify()

: JSON의 dtatype은 숫자(number), 문자열(string), 불리언(boolean), 객체(object), 배열(array), null입니다. 예시를 보니 문자열과  숫자, null이 잘 출력된 걸 볼 수 있네요. 그런데 score함수는 출력되지 않은 것 보이시나요? JSON은 함수로 값을 할당 할 수 없습니다.

 

이번에는 좀 더 응용해서 원하는 key값을 이용해 원하는 프로퍼티만도 출력해보겠습니다. 또 stringify()메소드는 파라미터로 함수도 받을 수 있는데요~ 콜백함수를 사용해서 출력도 해보겠습니다.

 

② JSON.parse()

: 이번에는 json으로 변환한 걸 다시 object로 바꿔서 출력해보겠습니다. JSON.parse()만 이용하면 됩니다 :) 

 

 

참 쉽죠? 그럼 이제 쉽고 간단하게 JSON과 object를 바꿔가며 사용해보세요 :) 

 

<html>
<head>
</head>
<body>
  Javascript Test 
<script type="text/javascript">

var food = ['pizza', 'coke', 'chicken', 'pasta']
var student = {
  name: 'jigeum',
  age: 25,
  bloodtype: 'B',
  class: null,
  score: () => {
    var math = 100
    var English = 60
    console.log( (math + English)/2)
  },
};

console.log(JSON.stringify(food));
console.log(JSON.stringify(student));

console.log(JSON.stringify(student, ['name', 'age']));

console.log(JSON.stringify(student, (key, value) => {
  console.log(`key: ${key}, value: ${value}`);
  return value
}));

var json = JSON.stringify(student)
var obj = JSON.parse(json)
console.log(obj)


</script>
</body>
</html>