Skip to Content
Suffering builds character

5. JSON

1. 데이터 포맷, Data Format

데이터 포맷이란 서버 간 통신에서 사용되는 데이터 구조로, 일련의 규칙을 따름

1-1. XML(eXtenxible Markup Language)

전통적으로는 HTML 처럼 마크업 형태로 작성되는 XML 확장자가 사용됨

데이터를 보관하기 위한 포맷만이 아닌, 프로그램 동작에 필요한 설정 정보를 저장하는 형태로도 사용됨

data.xml
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="Fiction"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> <price>29.99</price> </book> <book category="Non-Fiction"> <title lang="en">Sapiens: A Brief History of Humankind</title> <author>Yuval Noah Harari</author> <price>19.99</price> </book> </bookstore>

서버로부터 XML 형태의 데이터 포맷을 통해 데이터를 응답받을 경우 특정 데이터를 사용하기 위해서는 아래와 같은 별도의 변환 처리 로직이 필요

XML 형태의 문자열 데이터 → XML DOM 객체의 형태로 파싱(Parsing) → 원하는 값 추출

app.js
// XML 문자열 const xmlStringData = ` <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="Fiction"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> <price>29.99</price> </book> <book category="Non-Fiction"> <title lang="en">Sapiens: A Brief History of Humankind</title> <author>Yuval Noah Harari</author> <price>19.99</price> </book> </bookstore> `; // XML 문자열을 XML 문서로 파싱 const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlStringData, "text/xml"); // XPath를 사용하여 데이터 추출 const firstBookTitle = xmlDoc.evaluate("/bookstore/book[1]/title/text()", xmlDoc, null, XPathResult.STRING_TYPE, null).stringValue; const secondBookPrice = xmlDoc.evaluate("/bookstore/book[2]/price/text()", xmlDoc, null, XPathResult.STRING_TYPE, null).stringValue; // 결과 출력 console.log("First Book Title:", firstBookTitle); console.log("Second Book Price:", secondBookPrice);

이상적으로는 서로 다른 언어로 작성된 프로그램들 사이에서 데이터를 원활하게 교환하기 위해서는 서버로부터 전달받은 데이터의 포맷이 프로그램에서 즉각적으로 사용할 수 있는 형태에 가까울수록 좋음

1-2. JSON(JavaScript Object Notation)

JavaScript 언어 개발에 참여한 더글라스 클락포드(Douglas Crockford)는 서버를 개발하는 과정에서 XML 형식에 불편함을 느꼈고, <>와 같은 마크업 형태의 작성 포맷 대신, 현재 자신이 개발 중인 서버의 언어로 채택하여 사용 중인 JavaScript 언어와 유사한 형태의 포맷인 JSON을 고안함

JSON의 초기 이름은 JSML

JSON은 JavaScript 객체(object) 형태의 포맷으로 작성된 형태로 아래와 같은 형식으로 구성됨

data.json
{ "bookstore": { "books": [ { "category": "Fiction", "title": { "lang": "en", "text": "Harry Potter" }, "author": "J.K. Rowling", "price": 29.99 }, { "category": "Non-Fiction", "title": { "lang": "en", "text": "Sapiens: A Brief History of Humankind" }, "author": "Yuval Noah Harari", "price": 19.99 } ] } }

이후 JSON은 다른 언어 간 통신에서도 범용적으로 사용되는 데이터 포맷이 되었음

JSON은 주석(Comment) 작성 시 에러가 발생하여 작성할 수 없는 단점이 있으며, 그 외에 들여쓰기 방식으로 작성하는 YAML(YAML Ain't Markup Language) 데이터 포맷도 존재하며, 이는 주로 설정 파일 작성 용도로 사용됨

Last updated on