каково различие между json и [закрытым] xml

73
задан Shiva Verma 29 August 2017 в 09:08
поделиться

5 ответов

Они оба являются форматами данных для иерархических данных, поэтому, хотя синтаксис существенно отличается, структура аналогична. Пример:

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, языка XPATH для запроса данных XML и XSLT для преобразования XML в данные представления.

Формат XML существует уже некоторое время, поэтому для него разработано много программного обеспечения. Формат JSON довольно новый, поэтому его поддержка намного меньше.

В то время как XML разрабатывался как независимый формат данных, JSON был разработан специально для использования с Javascript и AJAX, поэтому формат точно такой же, как литеральный объект Javascript (то есть это подмножество кода Javascript, поскольку он например, не может содержать выражения для определения значений).

27
ответ дан 24 November 2019 в 12:09
поделиться

Это два разных способа представления данных, но они довольно сильно отличаются. На страницах википедии для JSON и XML приводятся примеры каждого из них, а также есть сравнительный абзац

4
ответ дан 24 November 2019 в 12:09
поделиться

XML использует структуры тегов для представления элементов, например item , {{ 1}} так что XML-документ представляет собой набор тегов, вложенных друг в друга. А синтаксис JSON выглядит как конструкция из языка Javascript со всеми вещами, такими как списки и словари:

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

Итак, если вы используете JSON, это действительно просто использовать строки JSON во многих языках сценариев, особенно в Javascript и Python.

2
ответ дан 24 November 2019 в 12:09
поделиться

Это два формата представления информации. В то время как JSON был разработан, чтобы быть более компактным, XML был разработан, чтобы быть более читаемым.

3
ответ дан 24 November 2019 в 12:09
поделиться

Фундаментальное различие, о котором, похоже, не упоминалось ни в одном другом ответе, заключается в том, что 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, и причина в том, что мы пытаемся сделать разметку с помощью объектной нотации.Поэтому мы должны изобрести способ разбросать фрагменты простого текста вокруг наших объектов, используя массивы «содержимого», которые могут содержать смесь строк и вложенных объектов.

С другой стороны, если у вас есть типичная иерархия объектов и вы хотите представить их в потоке, JSON лучше подходит для этой задачи, чем HTML.

{
    "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 не имеет такого различия! В моем примере XML - это запись, а - это список, но они не идентифицируются как таковые по синтаксису.

Вместо этого в XML есть «элементы», а не «атрибуты». Это похоже на такое же различие, но это не так, потому что атрибуты могут иметь только строковые значения. Они не могут быть вложенными объектами. Поэтому я не мог применить эту идею к , потому что мне не нужно было превращать в одну строку.

Используя внешнюю схему или дополнительные определенные пользователем атрибуты, вы можете формализовать различие между списками и записями в XML. Преимущество JSON в том, что в синтаксис низкого уровня встроено это различие, поэтому он очень лаконичен и универсален.Это означает, что JSON по умолчанию является более «самоописывающимся», что является важной целью обоих форматов.

Таким образом, JSON должен быть первым выбором для объектной нотации, где сладкое пятно XML - разметка документа.

К сожалению, для XML у нас уже есть HTML как язык разметки форматированного текста номер один в мире. Была сделана попытка переформулировать HTML в терминах XML, но особого преимущества в этом нет.

Таким образом, XML должен (на мой взгляд) быть довольно ограниченной нишевой технологией, лучше всего подходящей только для изобретения ваших собственных языков разметки форматированного текста, если вы по какой-то причине не хотите использовать HTML. Проблема заключалась в том, что в 1998 году Интернет все еще был очень популярен, и XML стал популярным из-за своего внешнего сходства с HTML. Было странно пытаться применить к иерархическим данным синтаксис, фактически разработанный для удобной разметки.

158
ответ дан 24 November 2019 в 12:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: