XML보다 JSON을 선호하는시기


148

내 요구 사항은 스프레드에서 데이터베이스에서 검색 된 일련의 값을 표시하는 것입니다. jquery를 사용하고 있습니다.

답변:


149

다음 중 하나에 해당하면 JSON보다 XML을 선호하십시오.

  • 메시지 검증이 필요합니다
  • XSLT를 사용하고 있습니다
  • 귀하의 메시지에는 많은 마크 업 텍스트가 포함됩니다
  • JSON을 지원하지 않는 환경과 상호 운용해야합니다

다음과 같은 경우 JSON보다 XML을 선호하십시오.

  • 메시지를 확인할 필요가 없거나 역 직렬화를 확인하는 것이 간단합니다.
  • 메시지를 변환하지 않거나 역 직렬화를 변환하는 것은 간단합니다.
  • 귀하의 메시지는 대부분 마크 업 텍스트가 아닌 데이터입니다
  • 메시징 엔드 포인트에는 우수한 JSON 도구가 있습니다.

9
JSON은 마크 업 된 텍스트를 처리 할 때 XML보다 이점을 제공하지 않습니다. 그러나 나는 당신의 요점을 본다. 과장된 것일 수도 있습니다.
Robert Rossney

10
모든 조건이 동일하면 두 가지 이유로 JSON을 선호합니다. JSON은 XML보다 CPU를 구문 분석하는 것이 훨씬 가볍고 (CPU 친화적) 전송되는 데이터가 훨씬 적습니다 (네트워크 친화적).
Roger Barreto 1

언제 XSLT를 사용하고 XML을 사용하지 않습니까? 이미 XSLT를 사용중인 경우 XML이 제공됩니다. XML을 사용한다는 주장을지지해서는 안됩니다. JSON.parse ()를 사용하는 경우 JSON 사용이라고 말하는 것과 같습니다. 또한 XSLT 변환을 작성하는 것보다 JSON 객체를 변환하는 것이 더 쉽다고 주장하지만 개인적인 편견 일 수 있습니다.
스펜서

JSON의 유효성 검사 부분에 완전히 동의하지 않습니다. JSON도 유효합니다. IETF 초안 확인 : link 초안이지만 여전히 ..
sotn

@sotn XML (예 : XQuery)과 같이 JSON 용 PL / SQL은 없습니다. 일부 NoSQL DB (eXist, MarkLogic Server, EMC Documentum xDB, BaseX, Zorba)의 기반
Dmytro Melnychuk

81

XML을 사용해야하는 경우가 아니면 JSON을 사용합니다. 이해하기가 더 쉽고 (구성 오버 헤드가 덜 필요하기 때문에) 라이브러리가 사용자의 컨텍스트에서 사용 가능한 경우 읽기 및 쓰기를 위해 프로그래밍하기가 더 쉬우 며 현재는 어디에나 있습니다.

아마존이 카탈로그를 웹 서비스로 처음 공개했을 때 JSON과 XML을 모두 제공했습니다. 구현 자의 90 %가 JSON을 선택했습니다.


56
"XML을 사용하지 않으면 JSON을 사용합니다." ~ 정확합니다.
멸종 위기에 처한

2
더 깊은 질문은 "어떤 이유로 XML을 사용해야합니까?"입니다. 그 이유는 바보입니까? 아니면 당신과 다른 관점에서 다른 관심사를 반영합니까?
13ren

5
다시 작성하고 싶지 않은 기존 소프트웨어를 포함하여 여러 가지 가능한 이유가 있습니다. 그러나 가장 중요한 것은 XML을 데이터 교환 형식으로 사용하여 양 끝을 제어하지 않거나 XML을 적용하고 요구하는 공식 표준이 있다는 것입니다. 내가 유일하게 관련된 개발자 인 경우에만 임의로 선택할 수 있습니다.
dkretz

15

클라이언트 측에서 이미 자바 스크립트를 수행하는 특정 사례를 고려할 때 다음과 같은 이유로 JSON을 사용합니다.

  • JSON은 자바 스크립트에 고유하므로 클라이언트 쪽에서 더 적은 코드를 작성해야합니다. eval()JSON.parse() 즉 JSON 문자열 만 사용하고 더 나은 방법으로 사용할 수있는 객체를 가져와야합니다.

  • 동시에 클라이언트 측에서 JSON을 평가하는 것이 더 효율적이므로 더 빠릅니다.

  • JSON 직렬화는 XML보다 짧은 문자열을 생성합니다. JSON을 사용하면 유선으로 전송되는 데이터 양이 줄어들고 그 점에서 성능이 향상됩니다.

더 읽을 거리가 있습니다 : http://www.subbu.org/blog/2006/08/json-vs-xml


7
되지 eval()아니 노 JSON에게 큰를 보내고하지?
shoosh

@Shy, JSON의 자체 사이트에 따르면 JSON에서 eval을 사용할 수 있다고 말합니다 (괄호로 묶음) : json.org/js.html
strager

9
json.org에서 가져옴 : eval 함수는 매우 빠릅니다. 그러나 JavaScript 프로그램을 컴파일하고 실행할 수 있으므로 보안 문제가있을 수 있습니다. 출처를 신뢰할 수 있고 유능한 경우 eval의 사용이 표시됩니다. JSON 파서를 사용하는 것이 훨씬 안전합니다
sarego

2
JSON.parse ()를 eval ()보다 선호합니다.
Havvy

14

XML 대 JSON relm에서 내가 본 다른 것들 :

JSON은 매우 좋습니다

  • 이름 / 값 쌍
  • 그 쌍을 중첩

즉, 배열이나 중첩 배열을 좋아하는 경향이 있습니다. 그러나 JSON에는 둘 다 없습니다.

  • 속성
  • 네임 스페이스

따라서 둘 이상의 JSON 서비스를 결합하려는 경우 네임 스페이스 충돌이 발생할 수 있습니다. 즉, JSON은 내 경험에서 데이터를 교환 할 때 XML을 사용할 수있는 것과 같은 것의 약 90 %에 사용할 수 있습니다.


Json의 또 다른 문제는 두 개의 json 메시지를 쉽게 병합하여 새 json 메시지를 만들 수 없다는 것입니다. 일반적으로 제대로 구성되지 않습니다.
vtd-xml-author

7
무엇에 대한 속성이 필요합니까? 요소에 다른 값이 포함되어 있으면 객체로 만드십시오. 멤버는 "속성"입니다. 솔직히 말해서 XML의 bifurcal 특성 / 컨테이너 구조는 완전히 해 롭습니다.
foo

속성이없는 JSON은 기능이라고 주장합니다.
brian

11

일반적으로 JSON은 더 작고 구문 분석하기가 더 빠릅니다.

다음과 같은 경우 XML을 선호하십시오.

  • 클라이언트에서 데이터를 처리해야하며이를 위해 XSL을 활용할 수 있습니다. XML + XSL 체인은 특히 대량의 데이터에 대해 JSON + JavaScript보다 빠르게 작동 할 가능성이 있습니다.
    • 좋은 예는 데이터를 HTML 스 니펫으로 변환하는 것입니다.
  • 다양한 레거시 사례 :
    • 기존 XML 서비스가 있으며 몇 가지 이유로 JSON으로 다시 작성하는 것이 번거 롭습니다.
    • 사용자 입력을 사용하여 약간의 가벼운 처리 후에이 데이터를 XML로 다시 게시해야합니다.

(거의) XML의 한 가지 중요한 경우 : HTML 스 니펫을 보낼 때 감지하는 것이 원시 데이터를 보내는 것보다 유리합니다. AHAH 는 간단한 응용 프로그램에서 놀라운 일을 할 수 있지만 간과되는 경우가 많습니다. 일반적으로이 스타일은 서버가 처리하지 않고 웹 페이지에 인라인 될 HTML 스 니펫을 전송한다고 가정합니다.

일반적으로 AHAH의 경우 CSS는 최대한 스 니펫을 시각적으로 마사지하고 사용자 별 또는 애플리케이션 별 설정을 사용하여 스 니펫의 관련 부분을 숨기거나 표시하는 것과 같은 간단한 조건을 구현하기 위해 최대한 활용됩니다.


8

JSON은 쉽고 빠르게 구문 분석 할 수 있습니다. XML은 구문 분석하기가 조금 더 어렵고 구문 분석 및 전송 속도가 느립니다 (대부분의 경우).

jQuery를 사용하고 있으므로 JSON을 사용하는 것이 좋습니다. jQuery는 JSON 데이터를 검색하여 자동으로 Javascript 객체로 변환 할 수 있습니다. 실제로 eval을 사용하여 JSON 데이터를 Javascript 객체로 변환 할 수 있습니다 . XML은 수동으로 전달해야합니다 (Javascript에서 어떻게 작동하는지 모르겠지만 XML 라이브러리를 사용하는 대부분의 언어에서는 어렵거나 더 성가시다).


1
JSON은 정의상 JavaScript 객체이며 jQuery는 실제로 특별한 "변환"을 수행하지 않습니다. 방금 분명히해야한다고 생각했습니다.
Brian Gianforcaro

5
JSON은 자바 스크립트로 인스턴스화되지 않는 한 자바 스크립트 객체가 아닙니다. Javascript 객체를 직렬화하는 데 사용되는 형식을 따르지만 적어도 XML처럼 쉽게 대부분의 언어에서 (적절한 애드온 및 내장 기능으로) 액세스 할 수 있습니다.
dkretz

@Gianforcaro, 나는 이것을 깨달았다. 더 명확하게 설명하기 위해 게시물을 편집하겠습니다. @doofledorfer는 "Javascript 객체로 변환합니다"라고 말했습니다. JSON 데이터가 Javascript 객체라고 말하지 않았습니다.
strager

아 죄송합니다.
strager

8

JSON은 데이터를 구문 분석하기 위해 클라이언트 브라우저가 처리해야하는 측면에서 항상 선호됩니다. 또한 JSON은 경량 데이터 교환 형식입니다.

XML 파싱은 항상 많은 브라우저 리소스를 소비하므로 달리 요구하지 않는 한 최대한 많이 피해야합니다.


7

웹 프로토콜 (예 : SOAP, XML, JSON, REST, POX 등)의 역사를 자세히 설명하는 주제에 대한 블로그 게시물이 있으며 각각의 장단점과 요약을 제공합니다. http://www.servicestack.net / mythz_blog /? p = 154

실제로 동적 (JSON) 언어와 정적 (XML) 언어의 차이점을 비교하여 XML과 JSON 사이에 많은 유사점을 그릴 수 있다고 생각합니다.

기본적으로 XML은 더 엄격하고 더 엄격한 직렬화 형식으로, 동반 스키마 (XSD 또는 DTD)로 선택적으로 확인할 수 있습니다. XSD는 매우 정교하며 날짜, 시간, 열거, 사용자 정의 유형 및 유형 상속 등 다양한 유형을 설명 할 수 있습니다. SOAP는 XML 기능 세트 위에 효과적으로 구축되어 웹 서비스를 설명하는 표준화 된 방법을 제공합니다 ( WSDL을 통한 유형 및 작업) WSDL 스펙의 상세 성과 복잡성은 개발하기가 더 지루할 수 있지만 동시에 더 많은 툴링을 사용할 수 있으며 대부분의 현대 언어는 클라이언트 프록시를 생성하는 자동화 된 툴을 제공하여 일부 부담을지고 있습니다. 외부 서비스와 상호 운용하려고 할 때 꺼집니다.

자주 변경되지 않는 잘 정의 된 '엔터프라이즈 서비스'가 있거나 다른 언어로 웹 서비스에 액세스해야하는 경우에도 웹 서비스에 XML을 사용하는 것이 좋습니다.

모든 이점을 위해 XML에는 단점도 있습니다. 형식화 된 확장 가능한 형식을 제공하기 위해 네임 스페이스를 사용하며 동일한 문서 내에서 속성과 요소를 지정할 수 있습니다. 하나의 문서 내에 다른 네임 스페이스가 있다는 것은 Xml 파서를 사용하여 데이터를 추출 할 때 많은 시간을 의미한다는 것입니다. 또한 검색 / 탐색하려는 각 요소의 네임 스페이스를 제공해야합니다. 또한 페이로드를 외삽하여 필요한 것보다 더 장황하게 만듭니다. 요소뿐만 아니라 속성을 출력하는 옵션이 있으면 클래스가 XML 문서에 잘 매핑되지 않습니다. 이러한 기능만으로도 대부분의 언어에서 프로그래밍 방식에 적합하지 않으므로 작업이 더 번거롭고 번거로워집니다.

반면 JSON은 XML의 형식이 매우 느슨하고 숫자, 부울, 문자열, 객체 및 배열과 같은 기본 유형 만 지원하므로 XML과 완전히 반대입니다. 다른 모든 것은 본질적으로 문자열에 맞아야합니다. 보다 구체적인 유형을 지원하려면 대역 외 비표준 사양을 준수해야하므로 언어 ​​경계를 넘어 통신하려고 할 때 좋지 않습니다. 거꾸로 그 제한된 기능 세트는 대부분의 언어에 적합한 프로그래밍 방식으로 적합하며 JSON 문자열 을 JavaScript 객체로 직접 평가할 수 있으므로 JavaScript에 완벽하게 적합 합니다.

크기와 성능

Microsoft XML과 JSON 구현 사이의 크기와 속도를 비교할 있는 노스 윈드 데이터베이스 벤치 마크가 있습니다 . 기본적으로 XML은 JSON 크기의 2 배 이상이지만 동시에 Microsoft가 JSON보다 30 % 이상 빠르기 때문에 XML DataContractSerializer를 최적화하는 데 많은 노력을 기울인 것처럼 보입니다. 크기와 성능간에 균형을 맞춰야합니다. 이 사실에 만족하지 않아서 , 나는 내 자신의 빠른 JsonSerializer 를 작성하기로 결정했다. 현재 JsSerializer 는 MS의 XML보다 2.6 배 빠르다.


6

XML은 XSD를 통해이를 적극적으로 지원하기 때문에 들어오는 데이터 청크의 유효성을 검사해야하는 경우 JSON보다 XML을 선택합니다.


3

JSON에서-마지막 발

JSON 경로를 내려 가면 10 년 전에 XML이 겪었던 것과 같은 문제가 발생합니다.

서로 다른 두 소스의 데이터를 하나의 JSON 패킷으로 혼합하면 요소 레이블이 서로 충돌 할 수 있습니다. 포장 명세서와 송장을 섞으면 갑자기 보낸 사람 주소가 상당히 다를 수 있습니다. XML에 네임 스페이스 가있는 이유 입니다.

다른 JSON 구조를 변환하려면 평범한 코드를 작성해야합니다. 데이터를 매핑하는보다 선언적인 방법으로 작업이 쉬워집니다. XML에 XSLT 가있는 이유 입니다.

사람들이 서비스에 연결하려면 JSON 패킷의 구조 (필드, 데이터 유형 등)를 설명해야합니다. 이를 위해 메타 데이터 언어가 있어야합니다. 이것이 XML에 Schemas 가있는 이유 입니다.

두 개의 클라이언트-서버 대화를 동시에 수행하면주의를 기울입니다. 서버에 두 가지 질문을하고 한 가지 답변을 얻으면 어떤 질문에 대답하는지 어떻게 알 수 있습니까? 이것이 XML에 WS-Correlation 이있는 이유 입니다.


2
네임 스페이스는 또 다른 해결 방법입니다. 원한다면 JSON에서도 똑같이 할 수 있습니다. WS-Correlation도 XML에 대한 사후 고려로 추가되었으며 "내장"되지 않습니다. JSON에도 추가 할 수 있습니다. 구조 설명 (스키마)은 XML에만 국한되지 않습니다. eBNF가 발명 된 이후 공식 언어에 대해 여러 가지 방법으로이를 수행 할 수 있습니다. XSLT는 유효한 판매 지점입니다.
foo

2

JSON은 자바 스크립트의 기본 인코딩입니다. 작업이 훨씬 빠르고 쉬워야합니다.


2

http://json.org/xml.html 의 첫 번째 줄에서

XML (Extensible Markup Language)은 SGML (Standard Generalized Markup Language)에서 파생 된 텍스트 형식입니다. SGML에 비해 XML은 간단합니다. 비교하면 HTML (HyperText Markup Language)이 훨씬 더 간단합니다. 그럼에도 불구하고 HTML에 대한 좋은 참고서는 1 인치 두께입니다. 문서의 형식과 구조가 복잡한 사업이기 때문입니다. . . .

분명히 JSON이 더 빠르지 만 읽기 어렵다는 것이 더 분명합니다. 속도에 JSON을 사용하고, 사람과의 상호 작용이 있고 속도를 희생 할 수 있으면 XML을 사용하십시오.


2
귀하의 답변으로 새로운 정보를 얻지 못합니다.하지만 여전히 사실 인 것 같습니다

1

모든 종류의 구성, 데이터 교환 또는 메시징에 JSON을 사용합니다. 다른 이유로 또는 문서와 유사한 데이터를 의미 적으로 표시해야하는 경우에만 XML을 사용합니다.


1

XML과 JSON은 모두 Microsoft에서 지원합니다. XML 리터럴은 VB 9의 새로운 멋진 기능이었습니다. 곧 출시 될 ASP.NET 4.0 버전에서 JSON은 클라이언트 측 템플릿의 성능을 활용해야합니다.

jQuery를 사용하거나 사용하지 않고 클라이언트 측에서 처리하기 쉽기 때문에 요청 한 질문에서 JSON이 선택 될 수 있습니다.


1

JSON 사용

  • 브라우저에서 JavaScript가 데이터를 사용하는 경우
  • 데이터 모델은 단순하고 복잡하지 않습니다 (너무 많은 복합 객체).

XML 사용

  • 주로 이기종 플랫폼 및 기술에 여러 서비스를 통합하는 SOA 유형의 환경에서 주로 사용됩니다.
  • SOAP는 HTTP 이외의 다른 프로토콜을 통해 전송 될 수 있다는 이점이 있습니다.
  • XSLT, XSL-FO 등과 같은 데이터 모델 변환 도구에서 사용하기 쉽습니다.
  • XML 데이터 저장 / 쿼리 (XQuery)를위한 많은 데이터베이스 지원.
  • XML은 매우 성숙한 데이터 형식이므로 생각할 수있는 사용 사례를 지원할 수있는 많은 도구를 찾을 수 있습니다.

1

나는 디지털 바자에서이 기사가 정말 흥미로웠다 것을 알았다 .

기사의 일부는 아래에 인용되어 있습니다.

JSON 전문가 정보 :

전달하려는 모든 것이 원자 가치 또는 원자 가치의 목록 또는 해시 인 경우 JSON은 XML의 많은 장점을 제공합니다. 인터넷에서 간단하게 사용할 수 있고 다양한 응용 프로그램을 지원하며 JSON을 처리하는 프로그램을 쉽게 작성할 수 있습니다. 선택적 기능이 거의 없으며 사람이 읽을 수 있고 합리적이며 디자인이 형식적이고 간결하며 JSON 문서를 쉽게 만들 수 있으며 유니 코드를 사용합니다. ...

XML 전문가 정보 :

XML은 비정형 데이터의 풍부한 기능을 현저하게 처리합니다. 많은 웹 API 디자이너가 죽음을 기쁘게 축하하더라도 XML의 미래에 대해 전혀 걱정하지 않습니다.

그리고 나는 "너에게 그렇게 말했어!" 내 책상에 토큰을 치워 더 풍부한 API를 개발하라는 요청을받을 때 JSON 사람들이하는 일을 기대합니다. 덜 잘 구조화 된 데이터를 교환하려고 할 때 JSON으로 데이터를 분산시킬 것인가? JSON에 대한 스키마 언어에 대한 언급이 가끔 있는데 다른 언어가 뒤따를까요? ...


이 답변과 발췌문은 인용 기사의 테너를 완전히 잘못 표현하여 JSON을 강력하게 선호합니다. 인용문은 기사 작성자가 동의하지 않는 제 3 자에 대한 것입니다. 인용 된 기사는 매우 잘 읽히므로 허위 진술에도 불구 하고이 답변에 대한 공감대는 없습니다.
Lawrence Dol

1

빠른 규칙 :

  • JSON : 프로그램 간 데이터 형식
  • YAML (JSON 수퍼 셋) : 휴먼-투-프로그램 데이터 형식
  • XML : 문서 마크 업 형식

설명:

JSON의 유일한 역할은 대부분의 프로그래밍 언어에 공통적 인 데이터 유형 ( list , hashesscalars )을 사용하여 객체 지향 데이터를 직렬화하는 것이며 ,이를 위해 실제로 달성하거나 개선 할 수 없습니다. "JSON에는 버전 번호가 없습니다. [JSON]에는 JSON 문법에 대한 개정이 예상되지 않습니다." - 더글러스 크록 포드는 (당신이 완벽하게 일을 할 수 있다는 신호로 이길 수 없습니다)

XML 번 데이터 간 변경 형식으로 판매하지만, 가장 일반적인 두 가지 사용 사례를 고려했다 : 비동기 클라이언트 - 서버 통신 (AJAX) - JSON 꽤 많이합니다 (X는 정말 J이어야 함) 전체 XML을 대체하고있다 웹 서비스 : JSON은 XML을 중복 대안으로 만들었습니다.

XML이 널리 사용 된 또 다른 것은 프로그램 용 인간 쓰기 가능 / 판독 가능 (?) 데이터 파일이지만, 여기에도 JSON 수퍼 셋 인 YAML의보다 간결하고 프로그램 친화적이며 인간 친화적 인 형식이 있습니다.

따라서 데이터 표현의 경우 JSON이 전반적으로 XML을 능가합니다. XML에 남은 것은 무엇입니까? 혼합 컨텐츠 문서 표현 입니다 .


0

대부분의 최신 웹 기술은 JSON을 사용하여 작동하므로 JSON을 사용하는 것이 좋습니다. 가장 큰 장점은 XML에서 동일한 정보를 여러 가지 다른 방법으로 표현할 수 있다는 것입니다. JSON에서는 더 간단합니다.

또한 JSON IMHO는 XML보다 훨씬 명확하므로 분명한 이점이 있습니다. 그리고 .NET으로 작업하는 경우 Json.NET은 JSON 작업에 도움이되는 확실한 승자입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.