programing

json과 xml의 차이점은 무엇입니까?

padding 2023. 3. 19. 19:52
반응형

json과 xml의 차이점은 무엇입니까?

JSON과 XML의 차이점은 무엇입니까?

근본적인 차이점은 XML은 마크업 언어(실제로 이름 그대로)인 반면 JSON은 객체(이름으로도 표시)를 나타내는 방법이라는 것입니다.

마크업 언어는 자유롭게 흐르는 일반 텍스트에 추가 정보를 추가하는 방법입니다.

Here is some text.

XML(특정 요소 어휘 사용)을 사용하면 다음과 같이 입력할 수 있습니다.

<Document>
    <Paragraph Align="Center">
        Here <Bold>is</Bold> some text.
    </Paragraph>
</Document>

이것이 마크업 언어를 문서 표현에 매우 유용하게 만드는 이유입니다.

JSON과 같은 객체 표기법은 유연하지 않습니다.하지만 이것은 보통 좋은 것이다.오브젝트를 표현할 때는 유연성이 필요 없습니다.위의 예를 JSON에 나타내려면 XML이 해결해 주는 몇 가지 문제를 실제로 수동으로 해결해야 합니다.

{
    "Paragraphs": [
        {
            "align": "center",
            "content": [
                "Here ", {
                    "style" : "bold",
                    "content": [ "is" ]
                },
                " some text."
            ]
        }
    ]
}

XML만큼 좋지 않습니다.왜냐하면 객체 표기로 마크업을 하려고 하기 때문입니다.따라서 문자열과 중첩된 개체를 혼재시킬 수 있는 "콘텐츠" 배열을 사용하여 개체 주위에 일반 텍스트 조각을 분산하는 방법을 고안해야 합니다.

한편, 일반적인 오브젝트 계층이 있어 스트림으로 표현하려면 HTML보다 JSON이 이 작업에 적합합니다.

{
    "firstName": "Homer",
    "lastName": "Simpson",
    "relatives": [ "Grandpa", "Marge", "The Boy", "Lisa", "I think that's all of them" ]
} 

논리적으로 동등한 XML을 다음에 나타냅니다.

<Person>
    <FirstName>Homer</FirstName>
    <LastName>Simpsons</LastName>
    <Relatives>
        <Relative>Grandpa</Relative>
        <Relative>Marge</Relative>
        <Relative>The Boy</Relative>
        <Relative>Lisa</Relative>
        <Relative>I think that's all of them</Relative>
    </Relatives>
</Person>

JSON은 프로그래밍 언어로 선언하는 데이터 구조처럼 보입니다.또한 중복되는 이름 반복도 적습니다.

그러나 가장 중요한 것은 "기록"(무질서, 이름으로 식별되는 항목)과 "목록"(직급으로 식별되는 항목, 위치로 식별되는 항목)을 구분하는 정의된 방법을 가지고 있다는 것입니다.객체 표기법은 그러한 구별이 없으면 사실상 쓸모가 없다.XML을 사용합니다. 의 예에서는, 「」를 참조해 주세요.<Person>이며, 「」입니다.<Relatives>는 목록이지만 구문에 의해 식별되지 않습니다.

「XML」 「XML」 「XML」이것은 같은 종류의 구별처럼 보이지만, 그렇지 않습니다.속성에는 문자열 값만 포함될 수 있기 때문입니다.중첩된 개체일 수 없습니다. 저는 이 를 이 아이디어에 수 겁니다.<Person> <Relatives>한 줄로 묶다.

외부 스키마 또는 추가 사용자 정의 속성을 사용하면 목록과 레코드를 XML로 구분할 수 있습니다. JSON의 장점은 낮은 수준의 구문에 이러한 구분이 포함되어 있기 때문에 매우 간결하고 보편적이라는 것입니다.즉, 기본적으로는 JSON이 더 "자기 기술"을 수행한다는 의미이며, 이는 두 형식 모두에서 중요한 목표입니다.

따라서 JSON은 객체 표기법의 첫 번째 선택입니다.여기서 XML의 단점은 문서 마크업입니다.

유감스럽게도 XML은 이미 HTML을 세계 제1의 리치 텍스트 마크업 언어로 채택하고 있습니다.HTML을 XML로 재구축하려고 했지만 큰 장점은 없습니다.

따라서 XML은 (내 생각에) 매우 제한된 틈새 기술이어야 하며 HTML을 사용하지 않는 경우 자신의 리치 텍스트 마크업 언어를 개발하는 데 가장 적합합니다.문제는 1998년 웹에 대한 과대광고가 여전히 많았고 XML은 HTML과 외형적으로 비슷해 인기를 끌었기 때문에 실제로 편리한 마크업을 위해 설계된 구문을 계층 데이터에 적용하려는 것은 이상한 디자인 선택이었다.

둘 다 계층 데이터에 대한 데이터 형식이므로 구문은 상당히 다르지만 구조는 비슷합니다.예:

JSON:

{
  "persons": [
    {
      "name": "Ford Prefect",
      "gender": "male"
    },
    {
      "name": "Arthur Dent",
      "gender": "male"
    },
    {
      "name": "Tricia McMillan",
      "gender": "female"
    }
  ]
}

XML:

<persons>
  <person>
    <name>Ford Prefect</name>
    <gender>male</gender>
  </person>
  <person>
    <name>Arthur Dent</name>
    <gender>male</gender>
  </person>
  <person>
    <name>Tricia McMillan</name>
    <gender>female</gender>
  </person>
</persons>

다만, XML 형식은, 예에 나타내는 것보다 한층 더 고도의 것입니다.예를 들어 각 요소에 속성을 추가하고 네임스페이스를 사용하여 요소를 분할할 수 있습니다.XML 파일 형식을 정의하는 표준, XML 데이터를 쿼리하는 XPATH 언어 및 XML을 프레젠테이션 데이터로 변환하는 XSLT도 있습니다.

XML 포맷은 오래전부터 존재해 왔기 때문에 XML 포맷을 위한 소프트웨어가 많이 개발되어 있습니다.JSON 포맷은 상당히 새로운 포맷이기 때문에 지원이 훨씬 적습니다.

XML은 독립된 데이터 포맷으로 개발되었지만 JSON은 Javascript 및 AJAX에서 사용하기 위해 특별히 개발되었기 때문에 형식은 Javascript 리터럴 객체와 동일합니다(예를 들어 값을 결정하는 식을 포함할 수 없기 때문에 Javascript 코드의 서브셋입니다).

XML과 JSON의 차이점은 XML은 메타 언어/마크업 언어이고 JSON은 경량 데이터 교환이라는 것입니다.즉, XML 구문은 고유한 의미를 갖지 않도록 특별히 설계되었습니다.특정 요소 이름은 특정 처리 응용 프로그램이 특정 방식으로 요소를 처리할 때까지 아무런 의미가 없습니다.반면 JSON 구문에는 {}은(는) 개체, []은(는) 어레이 사이에 특정 의미론이 포함되어 있습니다.

따라서 JSON 파서는 모든 JSON 문서의 의미를 정확하게 파악합니다.XML 파서는 마크업과 데이터를 분리하는 방법만 알고 있습니다.XML 문서의 의미를 다루려면 추가 코드를 작성해야 합니다.

요점을 설명하기 위해 Guffa의 예를 들어 보겠습니다.

{   "persons": [
  {
    "name": "Ford Prefect",
    "gender": "male"
 },
 {
   "name": "Arthur Dent",
   "gender": "male"
  },
  {
    "name": "Tricia McMillan",
    "gender": "female"
  }   
 ] 
}

JSON의 예는 의미론적으로 완전하지만 XML을 특정 방식으로 해석해야 동일한 효과를 얻을 수 있기 때문에 그가 제공하는 XML은 실제로 동일하지 않습니다.실제로 JSON은 시멘틱스가 이미 알려진 확립된 마크업 언어를 사용하는 예이며, XML 예에서는 사전 정의된 시멘틱스 없이 완전히 새로운 마크업 언어를 만듭니다.

보다 나은 XML은 XML 구문을 사용하여 JSON과 동일한 의미론을 사용하여 (가정적인) XJSON 언어를 정의하는 것입니다.다음과 같은 경우가 있습니다.

<xjson>   
  <object>
    <name>persons</name>
    <value>
      <array>
         <object>
            <value>Ford Prefect</value>
            <gender>male</gender>
         </object>
         <object>
            <value>Arthur Dent</value>
            <gender>male</gender>
         </object>
         <object>
            <value>Tricia McMillan</value>
            <gender>female</gender>
         </object>
      </array>
    </value>   
  </object> 
 </xjson>

일단 XJSON 프로세서를 작성하면 JSON 프로세서가 JSON을 나타낼 수 있는 모든 유형의 데이터에 대해 정확하게 실행할 수 있으며 JSON과 XJSON 간에 데이터를 손실 없이 변환할 수 있습니다.

따라서 XML이 JSON과 동일한 의미를 가지고 있지 않다고 불평하는 것은 요점을 놓치는 것입니다.XML 구문은 설계상 의미가 없습니다.여기서 중요한 것은 원하는 의미를 가진 마크업 언어를 작성하기 위해 사용할 수 있는 기본 구문을 제공하는 것입니다.따라서 XML은 임시 데이터 및 문서 형식을 구성하는 데 매우 적합합니다. 이러한 데이터 및 문서 형식을 위한 파서를 구축할 필요가 없으며 프로세서만 작성하면 되기 때문입니다.

그러나 XML의 단점은 구문이 상세하다는 것입니다.작성하는 마크업 언어에 대해서, 특정 언어의 특정의 의미를 나타내는 보다 간결한 구문을 생각해 낼 수 있습니다.따라서 JSON 구문은 위의 가상의 XJSON보다 훨씬 더 콤팩트합니다.

따라서 실제로 널리 사용되는 데이터 형식에 대해 고유한 구문을 작성하고 해당 구문에 대한 파서를 작성하는 데 필요한 추가 시간이 커스텀 마크업 언어의 간결성과 직관적인 구문에 의해 상쇄됩니다.또, 시멘틱스를 실장할 필요가 있는 많은 XML 마크업 언어를 구성하는 것보다, 확립된 시멘틱스와 함께 JSON을 사용하는 것이, 보다 이치에 맞는 경우가 많습니다.

또한 XML에서 특정 유형의 언어 및 프로토콜을 프로토타입으로 만드는 것이 타당하지만, 언어 또는 프로토콜이 일반적으로 사용되면 보다 콤팩트하고 표현력 있는 사용자 지정 구문을 만드는 것을 고려해야 합니다.

참고로 SGML이 이를 인식하고 SGML 문서의 마크업을 줄이는 메커니즘을 제공했다는 점은 흥미롭다.따라서 실제로 JSON 구문용 SGML DTD를 작성하여 SGML 파서로 JSON 문서를 읽을 수 있습니다.XML은 이 기능을 삭제했습니다.즉, 현재 특정 마크업 언어에 대해 보다 콤팩트한 구문을 필요로 하는 경우에는 JSON과 같이 XML을 남겨둘 필요가 있습니다.

데이터를 표현하는 방법은 두 가지가 다르지만, 상당히 다릅니다.JSONXML의 위키피디아 페이지에는 각각 몇 가지 예가 있으며 비교 단락이 있습니다.

두 가지 정보 표현 형식입니다.JSON은 보다 콤팩트하게 설계되었지만 XML은 보다 읽기 쉽게 설계되었습니다.

XML은 태그 구조를 사용하여 다음과 같은 항목을 표시합니다.<tag>item</tag>XML 문서는 서로 중첩된 태그 세트입니다.JSON 구문은 Javascript 언어의 구성처럼 보이며 목록이나 사전과 같은 모든 것이 포함되어 있습니다.

{
 'attrib' : 'value',
 'array' : [1, 2, 3]
}

JSON을 사용하면 많은 스크립트 언어(특히 Javascript와 Python)에서 JSON 문자열을 쉽게 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/2620270/what-is-the-difference-between-json-and-xml

반응형