>  기사  >  백엔드 개발  >  JSON과 XML의 장점과 단점에 대한 자세한 소개

JSON과 XML의 장점과 단점에 대한 자세한 소개

黄舟
黄舟원래의
2017-05-07 13:52:371918검색

JSON(Javascript Object 표기법)은 가벼운 데이터 교환 형식입니다. 인간이 읽고 쓰기가 쉽습니다. 기계가 구문 분석하고 생성하는 것도 쉽습니다. 이는 표준 ECMA-262 3판(1999년 12월)의 하위 집합인 Javascript 프로그래밍 Language를 기반으로 합니다. JSON은 완전히 언어 독립적인 텍스트 형식을 사용하지만 C 언어 계열(C, C++, C#, Java, Javascript, Perl, Python 등 포함)과 유사한 규칙도 사용합니다. 이러한 속성은 JSON을 이상적인 데이터 교환 언어로 만듭니다.
JSON의 개념은 매우 간단합니다. 즉, 서버가 직접 Javascript 문을 생성하고 클라이언트가 직접 eval 메소드를 사용하여 개체를 얻은 후 개체를 가져오므로 XML을 파싱하는 비용이 사라집니다.
백그라운드에서 정보를 불러오려면 다음과 같이 XML로 작성합니다:

<contact>
<friend>
<name>Michael</name>
<email>17bity@gmail.com</email>
<homepage>http://www.jialing.net</homepage>
</friend>
<friend>
<name>John</name>
<email>john@gmail.com</email>
<homepage>http://www.john.com</homepage>
</friend>
<friend>
<name>Peggy</name>
<email>peggy@gmail.com</email>
<homepage>http://www.peggy.com</homepage>
</friend>
</contact>

그리고 JSON으로 작성:

[
{
name:"Michael",
email:"17bity@gmail.com",
homepage:"http://www.jialing.net"
},
{
name:"John",
email:"john@gmail.com",
homepage:"http://www.jobn.com"
},
{
name:"Peggy",
email:"peggy@gmail.com",
homepage:"http://www.peggy.com"
}
]

표현이 간단할 뿐만 아니라, 가장 중요한 것은 DOM이 파싱되어 폐기될 수 있다는 것입니다. Javascript 선언 사양을 충족하는 한 JavaScript는 자동으로 이를 구문 분석합니다. Ajax에서 JSON을 사용하는 기본 방법은 백그라운드 선언 Javascript 객체문자열을 전경에 로드하고 eval 메소드를 사용하여 실제 객체로 변환한 후 최종적으로 업데이트하는 것이다. DHTML 페이지 정보를 통해 알려드립니다.

JSON은 XML 구문 분석으로 인해 발생하는 성능 문제와 호환성 문제를 줄일 뿐만 아니라 Javascript에서도 사용하기가 매우 쉽습니다. 속성을 ​​통해 객체에 편리하게 액세스할 수 있습니다. 데이터를 얻기 위해서는 가독성도 좋고, 기본적으로 구조화된 데이터의 속성을 갖고 있습니다. 좋은 방법이라고 말씀드리고 싶은데, 실제로 Google Maps는 데이터 전송에 XML을 사용하지 않고 JSON 솔루션을 사용합니다.

JSON의 또 다른 장점은 "교차 도메인"입니다. 예를 들어 www.Web의 웹 페이지에서

JSON 정의

를 사용하는 경우입니다. cn 읽기 쉽고 빠르게 쓰기 쉬운 경량 데이터 교환 형식입니다. 업계의 주류 기술은 완벽한 솔루션(현재 대부분의 언어에서 지원되는 정규식과 다소 유사)을 제공하여 서로 다른 플랫폼 간의 데이터 교환을 가능하게 합니다. JSON은 호환성이 높은 텍스트 형식을 채택하고 C 언어 시스템과 동작도 유사합니다.

XML의 정의

XML(Extensible Markup Language)은 전자 문서를 구조화하기 위해 표시하는 데 사용되는 마크업 언어이며 데이터, 정의를 표시하는 데 사용할 수 있습니다. 데이터 유형 은 사용자가 자신만의 마크업 언어를 정의할 수 있는 소스 언어입니다. XML은 SGML(Standard Generalized Markup Language)의 하위 집합이며 웹 전송에 매우 적합합니다. XML은 응용 프로그램이나 공급업체에 관계없이 구조화된 데이터를 설명하고 교환하기 위한 통합된 방법을 제공합니다.

[ XML ]
XML을 전송 형식으로 사용할 때의 장점:

  1. 표준을 준수하는 균일한 형식

  2. 다른 시스템과의 원격 상호 작용이 쉽고, 데이터 공유가 더 편리합니다

단점:

  1. XML 파일 형식은 파일 용량이 크고, 복잡한 형식 및 전송 대역폭을 점유

  2. 서버 측 코드나 클라이언트 코드가 극도로 복잡해지거나 유지 관리가 어렵다

  3. 클라이언트 측에서 서로 다른 브라우저 간에 XML을 구문 분석하는 방식이 일관되지 않고 많은 코드를 반복적으로 작성해야 합니다

  4. 서버측과 클라이언트측에서 XML을 파싱하는데 리소스와 시간이 걸립니다

[ JSON ]
그러면 XML 형식 외에 다른 경량 형식이 있나요? XML 작업을 대체할 수 있는 JSON(JavaScript Object Notation)이라는 데이터 교환 형식입니다.

장점:

  1. 데이터 형식이 비교적 간단하고 읽고 쓰기가 쉽습니다. , 형식이 압축되어 대역폭을 거의 차지하지 않습니다

  2. 이 언어를 구문 분석하기 쉽고 클라이언트 측 JavaScript는 eval_r()

  3. 액션스크립트, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby 및 기타 서버측 언어를 포함한 여러 언어를 지원하여 서버측 구문 분석을 용이하게 합니다

  4. PHP 세계에는 이미 PHP-JSON 및 JSON-PHP가 등장하여 PHP 직렬화 프로그램을 통한 직접 호출에 편리하며, PHP 서버측 개체, 배열 등을 사용하여 JSON 형식을 직접 생성할 수 있습니다. , 클라이언트 액세스 및 추출을 용이하게 합니다.

  5. JSON 형식은 서버 측 코드에서 직접 사용할 수 있기 때문에 서버 측과 클라이언트 측의 코드 개발이 크게 단순화되지만 완료된 작업은 동일하게 유지되고 유지 관리가 쉽습니다.

단점:

  1. XML 형식은 XML만큼 대중적이지 않고 널리 사용되지 않으며 다용도도 아닙니다

  2. JSON 형식은 현재 웹 서비스에서의 프로모션은 초기 단계입니다
    JSON과 XML의 장단점 비교

  3. 가독성 측면에서, JSON과 XML의 데이터 가독성은 기본적으로 동일합니다. JSON과 XML의 가독성은 비슷합니다. 한쪽은 권장 구문이고 다른 쪽은 표준화된 태그 형식이므로 승자를 구별하기가 어렵습니다.

  4. 확장성 측면에서 XML은 기본적으로 확장성이 매우 뛰어나며 JSON이 확장할 수 있지만 JSON이 확장할 수 있는 것은 없습니다.

  5. 코딩 난이도 측면에서 XML에는 Dom4j, JDom 등과 같은 풍부한 코딩 도구가 있습니다. JSON에도 json.org에서 제공하는 도구가 있지만 JSON 코딩은 분명히 훨씬 더 많습니다. JSON 코드는 도구의 도움 없이 작성할 수 있지만 XML을 잘 작성하는 것은 XML보다 쉽습니다.

  6. 디코딩 난이도 측면에서 XML의 구문 분석은 하위 노드와 상위 노드를 고려해야 하기 때문에 어지러운 반면 JSON의 구문 분석 난이도는 거의 0입니다. 이 시점에서 XML은 실제로 아무것도 잃지 않습니다.

  7. 업계에서는 XML이 널리 사용되는 반면 JSON은 이제 막 시작되었습니다. 그러나 Ajax라는 특정 분야에서는 향후 개발이 XML이 무너지는 방향으로 진행될 것입니다. JSON으로. 그때쯤이면 Ajax는 Ajaj(Asynchr유일한 Javascript 및 JSON)가 될 것입니다.

  8. JSON과 XML에도 풍부한 구문 분석 방법이 있습니다.

  9. JSON은 XML에 비해 데이터 크기가 작습니다.

  10. JSON과 JavaScript의 상호작용이 더 편리해졌습니다.

  11. JSON은 XML보다 데이터를 덜 설명합니다.

  12. JSON은 XML보다 훨씬 빠릅니다.

1. XML과 JSON의 데이터 교환 형식 비교:
XML: 확장 가능한 마크업 언어, HTML과 유사한 언어로 미리 정의된 태그가 없으며 DTD를 사용합니다. (문서 유형 정의) 데이터를 구성하기 위한 문서 유형 정의입니다. 형식은 통합되고 크로스 플랫폼 및 언어이며 오랫동안 업계에서 인정받는 표준이 되었습니다. 구체적인 정보는 Google이나 Baidu에 문의하세요. 경량 데이터 교환 형식인 JSON에 비해 XML은 중량급이라고 할 수 있습니다.
 JSON: JavaScript Object Notation은 경량 데이터 교환 형식입니다. 인간이 읽고 쓰기가 쉽습니다. 기계가 구문 분석하고 생성하는 것도 쉽습니다. 이는 표준 ECMA-262 3판(1999년 12월)의 하위 집합인 JavaScript 프로그래밍 언어를 기반으로 합니다. JSON은 완전히 언어 독립적인 텍스트 형식을 사용하지만 C 언어 계열(C, C++, C#, Java, JavaScript, Perl, Python 등 포함)과 유사한 규칙도 사용합니다. 이러한 속성은 JSON을 이상적인 데이터 교환 언어로 만듭니다.
2. 경량과 중량급에 대한 데이터 교환 형식 비교:
경량과 중량급은 상대적인 용어인데, JSON에 비해 XML의 중량급은 어디에 반영되어야 할까요? 현재 DOM과 SAX라는 두 가지 구문 분석 방법으로 설계되었습니다. JSON과 XML의 원칙은 동일하지만 XML은 상위 노드와 하위 노드를 고려해야 합니다. JSON은 구문 분석하기가 훨씬 덜 어렵습니다. 두 가지 구조를 기반으로 함:
key/value, key 값 쌍의 모음, 배열로 이해될 수 있는 정렬된 값 모음 SAX는 전체 문서를 읽지 않고도 구문 분석된 콘텐츠를 처리할 수 있습니다. . 단계별 구문 분석 방법입니다. 프로그램은 언제든지 구문 분석을 종료할 수도 있습니다. 이런 방식으로 큰 문서를 점진적으로, 조금씩 표시할 수 있으므로 SAX는 대규모 구문 분석에 적합합니다. 현재 JSON에서는 불가능합니다. 따라서 JSON과 XML의 경량/중량 차이점은 다음과 같습니다. JSON은 전체 구문 분석 솔루션만 제공하며, 이 방법은 더 적은 데이터를 구문 분석할 때만 좋은 결과를 얻을 수 있는 반면, XML은 대규모 A 단계별 구문 분석을 제공합니다. 많은 양의 데이터를 처리하는 데 매우 적합한 데이터 구문 분석 방식입니다. 3. 데이터 형식 인코딩 및 파싱의 어려움에 대한 데이터 교환 형식 비교:
인코딩 측면에서 XML과 JSON에는 자체 인코딩 도구가 있지만 JSON 인코딩은 XML의 도움 없이도 XML보다 간단합니다. 도구를 사용하면 JSON 코드를 작성할 수도 있지만 XML과 같은 좋은 XML 코드를 작성하는 것은 약간 어렵습니다. JSON도 텍스트 기반이고 둘 다 유니코드 인코딩을 사용하며 데이터 교환 형식 XML만큼 읽기 쉽습니다.
주관적으로 JSON이 더 명확하고 덜 중복됩니다. JSON 웹사이트는 JSON 구문에 대해 간략하면서도 엄격한 설명을 제공합니다. 일반적으로 XML은 문서 표시에 더 적합하고 JSON은 데이터 교환 처리에 더 적합합니다.
파싱 측면에서 일반 웹 애플리케이션 분야에서 개발자는 XML 파싱이 서버 측에서 XML을 생성하거나 처리하는지, 아니면 JavaScript를 사용하여 클라이언트 측에서 XML을 파싱하는지에 대해 종종 걱정합니다. 코드 및 개발 효율성이 매우 낮습니다.
실제로 대부분의 웹 애플리케이션에서는 데이터를 전송하기 위해 복잡한 XML이 전혀 필요하지 않으며 XML이 주장하는 확장성은 여기에서 이점을 거의 얻지 못합니다. 많은 Ajax 애플리케이션은 동적 웹 페이지를 구축하기 위해 HTML 조각을 직접 반환하기도 합니다. XML을 반환하고 구문 분석하는 것과 비교할 때 HTML 조각을 반환하면 시스템의 복잡성이 크게 줄어들지만 어느 정도의 유연성도 부족합니다. 데이터 교환 형식 JSON은 XML 또는 HTML 조각보다 더 큰 단순성과 유연성을 제공합니다. 웹 서비스 애플리케이션에서 적어도 현재로서는 XML이 여전히 흔들리지 않는 위치를 차지하고 있습니다.

위 내용은 JSON과 XML의 장점과 단점에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.