Extensible Markup Language의 줄임말이다.
JSON 이전에 주로 사용되던 데이터 교환 형식 중 하나다. XML은 태그라고하는 마크업 기호로 구조화된 문서를 생성하는 형식. XML은 데이터를 계층 구조로 나타내기에 적합하다. 다양한 플랫폼과 언어에서 사용될 수 있다. XML은 데이터의 계층 구조를 나타내는 강점을 가지고 있지만, 문법이 상대적으로 복잡하고 처리 속도가 느릴 수 있다.
<students>
<student>
<name>John Doe</name>
<age>20</age>
<gender>Male</gender>
</student>
<student>
<name>Jane Smith</name>
<age>19</age>
<gender>Female</gender>
</student>
</students>
초기에는 새로고침을 해야만 데이터 통신이 이루어지는 방식이었다. 사용자가 웹 페이지를 새로고침하면 서버로부터 새로운 데이터를 가져오는 방식을 사용했다.
이러한 동작 방식에서는 사용자의 동작에 따라 웹 페이지 전체가 다시 로드되며, 서버에 새로운 요청이 전송된다. 서버는 요청을 처리하고 새로운 데이터를 응답으로 보내준다. 이렇게 응답된 데이터를 기반으로 웹 페이지가 다시 렌더링되어 화면에 표시된다.
하지만 이러한 방식은 사용자 경험과 성능 면에서 제약을 가질 수 있다. 페이지 전체를 새로고침해야 하므로 화면이 깜빡이고, 사용자의 작업 흐름이 중단될 수 있다.
XMLHttpRequest의 줄임말이다.
JavaScript에서 제공되는 API로, 웹 브라우저에서 서버와 비동기적으로 데이터를 교환하기 위해 사용된다. 이름의 XML이 들어가긴 하지만, XHR은 XML뿐만 아니라 모든 종류의 데이터를 가져올 수 있다. XHR은 AJAX(Asynchronous JavaScript and XML)를 구현하기 위해 주로 사용된다.
XHR을 사용하면 웹 페이지에서 XML 데이터를 서버로부터 비동기적으로 로드하거나, 서버로 XML 데이터를 전송할 수 있다. XHR은 서버로부터 받은 XML 데이터를 JavaScript에서 파싱하여 웹 페이지에 동적으로 적용할 수 있다. 물론, XHR은 XML 데이터 뿐만 아니라 다른 형식의 데이터(JSON, 텍스트 등)도 주고 받을 수 있다.
JSON이 등장한 이후로 XML보다 JSON이 더 널리 사용되고 있다. 하지만 XML이 다 대체된 건 아니다. XML은 계층 구조로 데이터를 표현할 수 있어서 복잡한 구조를 다루는 데에 유용하다. 문서 기반의 데이터 교환에 자주 사용된다. 그래도 JSON이 널리 쓰인다.
JSON은 경량의 데이터 형식으로 데이터를 간결하고 간단한 구조로 표현할 수 있다. JSON은 JavaScript에서 객체를 표현하는 형식을 따르며, 다양한 프로그래밍 언어에서 지원되고 사용되고 있다. JSON은 웹 애플리케이션과 API에서 데이터를 교환하는 데에 특히 적합한 형식이다.
{
"name": "John Doe",
"age": 30,
"email": "johndoe@example.com",
"favorites": {
"colors": ["blue", "green"],
"movies": ["Inception", "The Shawshank Redemption"],
"foods": ["pizza", "sushi"]
}
}
key와 value에 반드시 큰따옴표를 써야하며 키와 값 사이, 키-값 쌍 사이 공백이 없어야 한다.
위에서 JSON 예시를 보다시피 왜 굳이 변환해야하고 왜 string 타입으로 만들어서 통신하고 서로 변환하는 과정을 거쳐야 할까?
데이터의 발신자, 수신자가 서로 알아 듣는 언어로 작성해야할 것이다. 서로 알아 들을 수 있게 소통해야할 것이다.
JSON은 텍스트 기반 형식으로 이루어져 있으며, 대부분의 프로그래밍 언어에서 쉽게 해석하고 처리할 수 있다. 이는 서로 다른 플랫폼간에 데이터를 교환할 때 유용하다.
JSON은 일반적으로 데이터 직렬화에 사용된다. 데이터를 String 형식으로 직렬화하면 데이터를 전송하고 저장하기 쉬워진다.
JSON 형태로 바꾸는 마법의 주문은 stringify를 사용하면 된다. 이러한 작업을 직렬화(serialize)라고 한다.
JSON.stringify(data)
JSON에서 반대의 작업을 하고 싶을 때는 parse를 사용한다. 이러한 작업을 역직렬화(deserialized)라고 한다
jSON.parse(data)
XML이란 무엇인가요?
https://aws.amazon.com/ko/what-is/xml/
XMLHttpRequest
https://developer.mozilla.org/ko/docs/Web/API/XMLHttpRequest