JSON과 XML의 비교
XML과 JSON 중 어느 쪽이 빠른지 알고 싶습니다.어떤 것을 언제 사용할까요?
Fast는 JSON이나 XML의 속성이나 이러한 특성을 비교한 결과가 아닙니다.존재하는 경우, 이는 파서의 속성 또는 데이터 전송에 사용하는 대역폭입니다.
JSON과 XML의 장점과 단점을 다음에 나타냅니다.
JSON
장점:
- 구문이 단순하여 XML에 비해 "마크업" 오버헤드가 줄어듭니다.
- 마크업이 JS 오브젝트 리터럴 표기의 서브셋이며 JavaScript와 동일한 기본 데이터 타입을 가지므로 JavaScript와 함께 사용하기 쉽습니다.
- 설명, 데이터 유형 및 구조 검증을 위한 JSON 스키마
- 깊이 중첩된 구조의 정보를 추출하기 위한 JsonPath
단점:
간단한 구문, 소수의 다른 데이터 유형만 지원됩니다.
코멘트는 지원되지 않습니다.
XML
장점:
- 범용 마크업. 어떤 목적으로든 '변호사'를 작성할 수 있습니다.
- 데이터 형식, 구조 유효성 확인을 위한 XML 스키마입니다.또한 새 데이터 유형을 생성할 수 있습니다.
- 다른 출력 포맷으로의 변환용 XSLT
- XPath/XQuery: 깊이 중첩된 구조에서 정보를 추출합니다.
- 네임스페이스를 지원하는 빌트인
단점:
- JSON에 비해 비교적 말이 많다(같은 양의 정보로 더 많은 데이터가 생성된다).
결국 필요한 것을 결정해야 합니다.두 형식 모두 정당한 사용 사례가 있습니다.JavaScript를 주로 사용하는 경우 JSON을 사용해야 합니다.
장점과 단점을 자유롭게 추가해 주세요.저는 XML 전문가가 아닙니다.
어떤 것을 사용할지 대답하기 전에 약간의 배경:
편집: 이 비교는 JavaScript를 탑재한 브라우저에서 사용하는 관점에서의 비교입니다.어느 데이터 형식도 사용할 필요가 없습니다.또한 디테일이 변경되어 유효하지 않게 되는 좋은 파서가 많이 있습니다.
JSON은 보다 콤팩트하고 (내 견해로는) 가독성이 뛰어납니다.전송에서는, 단지 전송되는 데이터의 수가 적어지기 때문에, 「고속」이 됩니다.
파싱에서는 파서에 따라 달라집니다.코드(JSON 또는 XML)를 데이터 구조(맵 등)로 변환하는 파서는 XML의 엄밀한 특성(XML 스키마로 데이터 구조를 명확하게 한다)의 이점을 얻을 수 있지만 JSON에서는 항목의 유형(String/Number/Nested JSON Object)을 구문적으로 추론할 수 있습니다.
myJSON = {"age" : 12,
"name" : "Danielle"}
가 12
(및 을 나타나다)Danielle
을 이용하다과 같이할 수 .javascript 。
anObject = JSON.parse(myJSON);
anObject.age === 12 // True
anObject.name == "Danielle" // True
anObject.age === "12" // False
XML에서는 다음과 같은 작업을 수행해야 합니다.
<person>
<age>12</age>
<name>Danielle</name>
</person>
(한마디로, 이것은 XML이 보다 상세하다는 점을 나타내고 있습니다.데이터 전송에 대한 우려입니다).이 데이터를 사용하려면 파서를 통해 데이터를 실행한 다음 다음과 같이 호출해야 합니다.
myObject = parseThatXMLPlease();
thePeople = myObject.getChildren("person");
thePerson = thePeople[0];
thePerson.getChildren("name")[0].value() == "Danielle" // True
thePerson.getChildren("age")[0].value() == "12" // True
'', '파서', '파서', '파서'를 잘 칠 수 있어요.age
당신을 위해서(반면, 당신은 원하지 않을 수도 있습니다.하는 것이 JSON의 name
이 더 일 수 XML을 다음과 같이 구성하는 것이 더 직관적일 수 있습니다.
<person name="Danielle" age="12" />
그러나 데이터에 액세스하려면 지도 조회를 수행해야 합니다.
myObject = parseThatXMLPlease();
age = myObject.getChildren("person")[0].getAttr("age");
편집: 원본:
대부분의 프로그래밍 언어(전부는 아님)에서 이와 같은 맵 검색은 속성 검색보다 비용이 많이 듭니다(JSON을 구문 분석할 때 위에서 설명한 것과 같습니다).
이는 오해의 소지가 있습니다.JavaScript(및 기타 동적 언어)에서는 맵 룩업과 필드 룩업 사이에 차이가 없음을 기억하십시오.사실 필드 룩업은 지도 룩업일 뿐입니다.
정말 가치 있는 비교를 원하는 경우 데이터를 사용할 예정인 컨텍스트에서 벤치마크를 수행하는 것이 가장 좋습니다.
필릭스 클링은 타이핑을 하고 있기 때문에, 각각의 사용 타이밍에 대해 비교한 꽤 간결한 답변을 이미 게재하고 있기 때문에, 더 이상 말하지 않겠습니다.
처리속도가 관련된 유일한 문제는 아닐 수 있지만, 이 문제는 벤치마크의 몇 가지 수치입니다.JSON vs. XML:상세성에 관한 몇 가지 확실한 수치입니다.이 간단한 벤치마크에서는 XML이 JSON에 비해 21%의 오버헤드를 제공합니다.
장황함에 관한 중요한 주의사항(기사에서 말한 것처럼)은 가장 일반적인 불만사항입니다.이것은 실제로는 그다지 관련이 없습니다(XML이나 JSON 데이터는 일반적으로 사람이 다루지 않습니다만, 머신에 의해서 처리됩니다).속도에 관해서는 압축하는 데 상당한 시간이 필요합니다.
또한 이 벤치마크에서는 대량의 데이터가 처리되어 일반 웹 애플리케이션은 90MB 크기의 데이터 청크를 전송하지 않으며 압축이 적합하지 않을 수 있습니다(데이터 청크가 작을 경우 압축된 청크가 압축되지 않은 청크보다 큽니다). 따라서 해당되지 않습니다.
그러나 압축이 포함되지 않은 경우 전송 채널에서 JSON의 가중치가 낮아집니다.특히 WebSocket 접속을 통해 전송되는 경우 기존 HTTP 오버헤드가 없으면 JSON의 이점이 더욱 커질 수 있습니다.
송신 후에는 데이터가 소비되며, 이는 전체 처리 시간에 반영됩니다.빅 데이터나 복잡한 데이터가 전송될 경우 검증 중인 XML 파서에 의해 자동으로 체크되는 스키마가 없으면 JSON 데이터에 대한 추가 검사가 필요할 수 있습니다.이러한 체크는 특별히 빠른 것으로 알려져 있지 않은 JavaScript에서 실행되어야 하므로 이러한 경우 XML에 대한 추가 오버헤드가 발생할 수 있습니다.
어쨌든 테스트만이 특정 사용 사례에 대한 답을 제공합니다(표준도 안전도 무결성도 아닌 속도만 중요한 경우).
업데이트 1: 언급할 가치가 있는 것은 이진 XML 형식입니다.EXI는 Gzip을 사용하는 것보다 적은 비용으로 압축을 제공하고 압축된 XML을 압축 해제하는 데 필요한 처리를 저장합니다.EXI는 XML에 대한 BSON과 JSON의 관계입니다.여기에서는 공간과 시간 양쪽의 효율성에 관한 간단한 개요를 소개합니다.EXI: 마지막 바이너리 표준?
업데이트 2: W3C가 실행하는 바이너리 XML 퍼포먼스 보고서도 있습니다.효율성, 메모리 및 CPU 설치 공간 절감도 XML 영역의 과제입니다.효율적인 XML 교환 평가입니다.
2015-03-01 업데이트
이 맥락에서 HTTP 오버헤드가 문제로 제기되었기 때문에 IANA는 (압축, 감압 및 gzip과 함께) HTTP 프로토콜의 콘텐츠 코딩으로 EXI 인코딩(위에서 언급한 효율적인 이진 XML)을 등록했습니다.즉, EXI는 브라우저가 다른 HTTP 클라이언트 중에서 이해할 수 있는 옵션입니다.Hypertext Transfer Protocol Parameters(iana.org)를 참조하십시오.
디지털 바자회에서 이 기사가 정말 재미있었어요.Norm에서 인용한 인용:
JSON의 프로에 대해서:
전달하고 싶은 것이 원자값, 원자값 목록 또는 해시뿐이라면 JSON은 XML의 많은 장점을 가지고 있습니다.즉, 인터넷을 통해 바로 사용할 수 있고, 다양한 애플리케이션을 지원하며, JSON을 처리하기 위한 프로그램을 쉽게 작성할 수 있으며, 옵션 기능이 거의 없으며, 사람이 읽을 수 있는 설계 형태입니다.JSON 문서는 쉽게 작성할 수 있으며 Unicode를 사용합니다.
XML 프로에 대해서:
XML은 풍부한 비정형 데이터를 매우 잘 처리합니다.웹 API 디자이너의 간부들이 XML의 죽음을 즐겁게 축하한다고 해도 나는 XML의 미래에 대해 전혀 걱정하지 않는다.
내 책상에 "그랬잖아!"라는 토큰을 집어넣지 않을 수 없다.JSON 사람들이 보다 풍부한 API를 개발하도록 요청받았을 때 무엇을 할 것인지 기대하고 있습니다.구조화되지 않은 데이터를 교환하고 싶을 때 JSON에 구두끈을 달아줄까요?JSON용 스키마 언어에 대한 언급이 가끔 있습니다만, 다른 언어도 계속됩니까?...
나는 개인적으로 Norm의 말에 동의한다.XML에 대한 대부분의 공격은 통합 개발자가 아니라 일반적인 애플리케이션을 위한 웹 개발자에 의한 것이라고 생각합니다.하지만 그건 내 의견이야!;)
XML(Extensible Markup Language)은 표준 브로드캐스트 언어이며 모든 프로그래밍 언어로 사용할 수 있으며 서버와 클라이언트 양쪽을 지원하므로 XHR이 가장 유연한 솔루션입니다.지정된 그룹이 다른 부분에 영향을 주지 않고 프로그램의 일부를 개발할 수 있도록 XML을 더 많은 부분에 대해 분리할 수 있습니다.XML 형식은 XML DTD 또는 XML Schema(XSL)에 의해 결정되어 테스트할 수도 있습니다.
JSON은 JavaScript 어플리케이션의 가능한 포맷으로 인기를 끌고 있는 데이터 교환 포맷입니다.은 쉽게 수 .JSON은 구문이 매우 간단하기 때문에 쉽게 배울 수 있습니다.는 "과 "JSON"의 합니다.eval
ㅇㅇㅇㅇ는, ㅇㅇ, ㅇㅇ는,eval
함수에 음수가 있습니다.를 들어 JSON의 해석 느릴 수로 JSON은 해석 속도가 매우 느릴 수 .eval
매우 위험할 수 있습니다.이것은 JSON이 좋지 않다는 것을 의미하는 것이 아니라, 단지 우리가 더 조심해야 한다는 것입니다.
게임 등 데이터 교환이 가벼운 어플리케이션에는 JSON을 사용하는 것이 좋습니다.데이터 처리에 신경 쓸 필요가 없기 때문에 매우 간단하고 빠릅니다.
XML은 쇼핑 사이트와 같은 대형 웹 사이트에 적합합니다.XML은 보다 안전하고 투명해질 수 있습니다.기본적인 데이터 구조 및 스키마를 생성하여 보정을 쉽게 테스트하고 부품으로 쉽게 분리할 수 있습니다.
속도와 보안 때문에 XML을 사용하는 것이 좋지만, 가벼운 것은 JSON을 사용하는 것이 좋습니다.
JSON의 중요한 점은 보안상의 이유로 데이터 전송을 암호화하는 것입니다.JSON이 XML보다 훨씬 빠르다는 것은 의심의 여지가 없습니다. JSON이 60ms밖에 걸리지 않았기 때문에 XML이 100ms를 가져가는 것을 본 적이 있습니다.JSON 데이터는 쉽게 조작할 수 있습니다.
언급URL : https://stackoverflow.com/questions/4862310/json-and-xml-comparison
'programing' 카테고리의 다른 글
Mongoose에서 다른 스키마 참조 (0) | 2023.03.12 |
---|---|
Word Press는 왜 아직도 adslash(), register_globals() 및 magic_quotes를 사용하고 있습니까? (0) | 2023.03.12 |
UI-Router를 사용하여 사용자가 부모 상태로 이행할 때 사용자를 자녀 상태로 유도 (0) | 2023.03.07 |
jQuery 또는 플레인 JavaScript의 react js에서 변경 또는 입력 이벤트를 트리거하는 가장 좋은 방법은 무엇입니까? (0) | 2023.03.07 |
Oracle 저장 프로시저에서 결과 세트 가져오기 (0) | 2023.03.07 |