# JSON vs XML

* 데이터의 형태
    
    * **JSON(Javascript Object Notation)**
        
        * 구조를 가지며 객체로 다른 언어화 호환
            
            ```json
            {
                "name": "식빵",
                "family": "웰시코기",
                "age": 1,
                "weight": 2.14
            }
            ```
            
    * **XML(Extensible Makrup Language)**
        
        * 구조적이고 정확한 문법이 필요, 용량이 크다
            
            ```xml
            <dog>
                <name>식빵</name>
                <family>웰시코기<family>
                <age>1</age>
                <weight>2.14</weight>
            </dog>
            ```
            
        * DOM(Document Object Model) parser
            
            * 문서를 다 읽고 난 후 문서 구조 전체를 자료구조(DOM Tree)에 저장하여 탐색하는 방식
                
                ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1675038522995/b1cc7d7c-0dcb-403c-ac51-b0461bb84201.png align="center")
                
        * SAX(Simple API for XML) parser
            
            * 문서를 읽으면서 태그의 시작, 종료 등 이벤트 기반으로 처리하는 방식
                
                ![XML Parsing for Java](https://docs.oracle.com/cd/E24693_01/appdev.11203/e23582/img/adxdk114.gif align="center")
                
    * **CSV(Comma Separated Value)**
        
        * 용량이 작지만 구조적이지 못함
            
    * **JSON과 XML의 공통점**
        
        * 데이터를 저장하고 전달하기 위해 고안되었다
            
        * 계층적인 데이터 구조를 가진다
            
        * 다양한 프로그래밍 언어로 파싱될 수 있다
            
    * **JSON과 XML의 차이점**
        
        * JSON은 종료 태그를 사용하지 않는다
            
        * JSON의 구몬이 XML의 구문보다 더 짧다
            
        * JSON이 XML보다 빠르다
            
            * JSON은 문자열을 전송받은 후에 해당 문자열을 바로 파싱한다
                
            * XML은 XML DOM(Document Object Model)을 이용하여 해당 문서에 접근한다
                
        * JSON은 배열을 사용할 수 있으나 XML은 배열을 사용할 수 없다
            
        * JSON은 자바스클비트표준 함수 eval() 함수로 파싱되고, XML은 XML 파서로 파싱된다
            
            ![](https://blog.kakaocdn.net/dn/TDA8K/btqSgNbaH5A/Cq44JrXjkiu0egVwc3rGIK/img.png align="center")
            
    * **XML을 사용하는 이유**
        
        * JSON은 전송받은 데이터의 무결성을 사용자가 직접 검증해야 한다
            
        * XML은 스키마를 사용하여 데이터의 무결성을 검증할 수 있어서 아직 많이 사용되고 있다
            
* **참고 자료**
    
    * [JSON과 XML](https://www.tcpschool.com/json/json_intro_xml)
