데이터를 저장하고 전송하기 위한 경량의 데이터 교환 형식.
JSON은 2002년 더글라스 크락포드(Douglas Crockford)에 의해 도입된 데이터 교환 형식이다.
1. XML의 복잡성
이전에는 XML(Extensible Markup Language)이 데이터 교환을 위한 주류였다. 그러나 XML은 태그 기반의 문법을 사용하고, 파싱과 처리에 상대적으로 많은 비용과 복잡성을 요구하는 경향이 있었음.
➡️ 더 가볍고 간단한 데이터 교환 형식이 필요하다!
2. JavaScript의 보편성
JavaScript는 웹 애플리케이션 개발에서 널리 사용되는 프로그래밍 언어다. JS는 객체 기반의 언어이며, 객체를 쉽게 생성하고 조작할 수 있는 기능을 제공함.
➡️ JS와 데이터 교환 형식이 잘 결합되어야 효율적인 웹 개발이 가능하다!
3. 데이터 교환의 필요성
웹 애플리케이션에서 서버와 클라이언트 간에 데이터를 주고받아야 하는 경우가 많음.
➡️ 서버와 클라이언트 간의 상호 운용성을 보장할 수 있는 표준화된 데이터 형식이 필요하다!
SO❓
JSON은 XML보다 간결하고 가벼운 구문을 가지고, JS 객체 구문과 유사한 형태를 갖추고 있다.
이로 인해 JS를 비롯한 다양한 프로그래밍 언어에서 쉽게 파싱하고 처리할 수 있고, 데이터의 직렬화와 역직렬화에 효율적이다.
또한 JSON은 인터넷에서 데이터를 주고 받는데 사용되는 RESTful API와의 호환성을 제공하고, 웹 애플리케이션 개발을 간편하고 효율적으로 만들어 준다.
{ }
로 표현, 중괄호 안에 속성-값 쌍인 키(key)와 값(value)으로 구성됨[ ]
로 표현, 대괄호 안에 값들의 리스트로 구성됨.{
"name": "Nami",
"age": 27,
"city": "Seoul",
"hobbies": ["watching Movie", "reading", "hikking"],
"isStudent": false,
"address": {
"street": "123 Main St",
"zipCode": "10001"
}
}
hobbies
와 address
는 배열과 객체로 구조화되어 중첩된 데이터를 표현
fetch()
fetch()
함수를 사용하면 서버로 HTTP 요청을 보내고 응답을 받아올 수 있다.fetch()
를 사용하여 서버로부터 JSON 데이터를 가져온 후, .json()
메서드를 호출하여 JSON 데이터를 파싱합니다.fetch()
는 네트워크 요청과 동시에 JSON 데이터를 파싱하는 기능을 제공// fetch()를 사용하여 서버로부터 JSON 데이터를 가져와 파싱
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
console.log(data); // JSON 데이터를 파싱하여 처리
})
.catch(error => {
console.error('요청 중 오류 발생:', error);
});
JSON.parse()
함수를 사용하여 JSON 문자열을 JavaScript 객체로 파싱할 수 있다.const jsonString = '{"name": "John", "age": 30}';
const jsonObj = JSON.parse(jsonString);
console.log(jsonObj.name); // "John"
console.log(jsonObj.age); // 30
JSON.stringify()
함수를 사용하여 JavaScript 객체를 JSON 문자열로 변환const obj = {
name: 'John',
age: 30
};
const jsonString = JSON.stringify(obj);
console.log(jsonString); // '{"name":"John","age":30}'
참고로 인증도 JSON이 사용되는 영역이다.
이전에 포스팅한 것 참조.
개발자는 JSON 웹 토큰(JWT)을 사용해 인증 클레임을 전달할 수 있다.