본문 바로가기

Data

xml과 json

프론트에서 그린거 말고 api 반환값을 직접 좀 들여다봐야 할 때가 있다. 반환해야 될 값이 빠져있거나, 전달은 되는데 프론트 상에서 노출이 안되거나 하는 경우인데 지금 일하는 곳서는

 

  • 프론트 단에서 노출 서버 API에 키워드와 조건 (이용자 정보) 등을 조합해 질의
  • 노출 서버는 적절한 문서 조합을 반환

하는데, 이 때 반환되는 문서가 xml 형태이다. 덕분에 파싱도 해보고 파라미터 여러 개 바꿔가며 가지고 놀 수 있었는데, 대체 이 xml 형식의 문서가 뭐고 api가 이런 종류의 응답을 제공하는 게 일반적인지, 아니면 다른 형태의 리턴도 줄 수 있는지 알아보려고 한다. 회의 하다가 "xml 대신 json으로 드릴까요?" 라는 말이 나왔기 때문에.

 

XML

Xtensible Markup Language. 1998년 w3c에서 배포된 이래로 구조화된 데이터를 사람/기계 간 전달하기 위해 가장 빈번하게 사용되는 파일 포맷

  • 순수 텍스트 문서로, 사람과 기계 모두 쉽게 이해할 수 있음
  • 구조화된 문서이기 때문에 파싱이 용이하여 특히 기계 - 다른 소프트웨어 어플리케이션, 시스템, 플랫폼 - 간 호환성이 높음. 많은 웹 기반 어플리케이션이 정보를 저장하거나 다른 어플리케이션으로 정보를 전달할 때 xml 포맷의 문서를 활용한다.
  • Unicode 지원하여 여러 언어 지원 가능

source: researchgate.net

JSON

JavaScript Object Notation. 키-값attribute-value pair과 배열array을 기반으로 데이터를 저장 혹은 전송하기에 용이. JavaScript에서 유래한 포맷은 맞지만 대부분 프로그래밍 언어에서 처리를 지원하여 language-independent 데이터 포맷으로 분류함. 처음 개발된 건 2000년대 초반인데 2013년 첫 표준화가 됐다고 한다. 비교적 젊네!

 

source - wikipedia

 

XML vs JSON

그럼 대체 왜 우리 개발자는 json으로도 드릴 수 있다고 했을까? 

JSON은 흔히 low-overhead alternative to XML 라고 한다. xml보다 유지보수든, 구축이든 비용이 적게 든다는 의미일 테지?

서버에서는 선택에 따라 xml과 json 형식의 포맷 모두 내려받을 수 있게 해줄 수 있고, 클라이언트는 RequestHeader에 application/xml, application/json 이라고 원하는 Media타입을 지정해주면 된다고 한다. (Springboot 기준)

 

JSON이 우세한 점

  1. 덜 장황함: xml은 tag의 오프닝과 클로징 (<rank> 1 </rank>) 이 필요. 
  2. 더 작은 크기: 같은 정보를 담으면 json 파일의 크기가 유의미하게 작다고 함. 일단 위의 클로징 태그부터가...
  3. 주로 웹의 문제겠지만, javascript와 합이 좋음
  4. 파싱 편의성 및 성능이 xml 대비 좋음: JSON 문서를 ‘객체’나 ‘다중 배열’로 즉각 변환 가능

XML이 우세한 점

  1. 메타 데이터 지원: json은 속성에 불과하고, xml은 메타 데이터를 element 안에 attribute로 저장할 수 있음.
    이렇게: <album albumnumber="6">
  2. 무결성 파악에 좋다(고 하는데 이건 아직 뭔소린지 잘 모르겠음)

 

참고: XML vs HTML

  • html은 정보의 디스플레이에 초점을 맞추고, xml은 정보의 구조화된 저장에 더 집중한 포맷이다
    • xml은 이 데이터가 '어떻게 표현되어야 하는지'에 대한 정보를 담고 있지 않음
    • 이 때문에, html과 xml이 상보적인 관계라고 보는 게 맞겠다.
  • html의 tag는 사전에 정의된 것에 한정된 반면, xml은 개발자가 DTD (Document Type Definition)에 필요한 태그custom tag를 직접 정의하여 사용할 수 있어서 확장성이 높다(extensible). 

 

여담

오피스의 pptx, docx의 x는 xml 포맷을 지원한다는 뜻이라고.

 

 

참고/ 번역 원문

https://blog.hubspot.com/website/what-is-xml-file

https://www.w3schools.com/xml/xml_usedfor.asp

https://en.wikipedia.org/wiki/JSON

https://restfulapi.net/json-vs-xml/

https://blog.naver.com/PostView.naver?blogId=adamdoha&logNo=222229779859&categoryNo=100&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView 

https://www.coovil.net/xml-vs-json/

https://www.quackit.com/json/tutorial/json_vs_xml.cfm

 

반응형

'Data' 카테고리의 다른 글

Apache Kafka 카프카  (1) 2022.05.01
OLAP과 OLTP  (0) 2022.02.09
Apache Hadoop 하둡  (1) 2022.01.31