Как JSON выдерживает сравнение с XML с точки зрения времени сериализации/десериализации и размера файла?

У меня есть приложение, которое работает немного медленный по Интернету из-за причин пропускной способности. Я включил GZip, который улучшил время загрузки значительным amout, но я также рассматривал, мог ли я переключиться от XML до JSON для отжимания того последнего бита производительности. Был бы с помощью JSON сделать размер сообщения значительно меньшим, или просто несколько меньшим? Скажем, мы говорим приблизительно 250 КБ данных XML (который сжимается до 30 КБ).

23
задан Nick Bolton 20 April 2010 в 07:35
поделиться

4 ответа

Не ответ, а скорее предложение проверить ваши предположения.

Как JSON меньше?

JSON:

"person":{"firstname":"Fred", 
          "lastname":"Flintstone",  
          "age":38, 
          "spouse":"Wilma" }

XML:

<person firstname='Fred' 
        lastname='Flintstone' 
        age='38' 
        spouse='Wilma'/>

Я просто не понимаю, как в целом выражение JSON будет на 30% меньше, чем «эквивалентный» XML. Даже если вы увеличите сложность этих вещей с помощью вложенных структур и массивов, разница не будет 30%. Это примерно эквивалентно: json получает преимущество, потому что конечный тег вложенной структуры - это}, тогда как XML получает преимущество, потому что ему не нужно заключать имена полей в кавычки.

Если вы заставили меня использовать элементы XML, например:

<person>
   <firstname>Fred<firstname>
   <lastname>Flintstone<lastname>
   <age>38</age>
   <spouse>Wilma</spouse>
</person>

... конечно, результирующий XML больше, чем предыдущий JSON. Но это похоже на обман.


Возможно, теперь в том, как вы форматируете XML, элементы используются для всего, и есть возможность соответственно уменьшить полезную нагрузку. Но это не обязательно подразумевает JSON. Если у вас есть инструменты и библиотеки, которые обрабатывают XML, вы можете сохранить XML и сжать его.

14
ответ дан 29 November 2019 в 02:01
поделиться

Вообще говоря, JSON намного быстрее и меньше, чем эквивалентный XML. XML богаче тем, что вы можете хранить метаданные (атрибуты) и контент отдельно, но того же можно добиться в JSON с соответствующими соглашениями о структурировании.

1
ответ дан 29 November 2019 в 02:01
поделиться

Да, JSON будет примерно на 30% быстрее, так как меньше символов перемещается по строке и его очень быстро анализировать.

Ypu может также взглянуть на "YAML", который отправляет абсолютный минимум метаданных в сообщении.

0
ответ дан 29 November 2019 в 02:01
поделиться

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

Так как это всего лишь тест, который на самом деле не нужен, вы можете просто написать конвертер xml-> json в javascript, который прошел бы дерево XML DOM и скопировал его во вложенную структуру массива / объекта, а затем передал его в JSON.stringify (). Единственная сложная задача - решить, что станет массивом, а что - объектом.

Найдите репрезентативную выборку (или несколько) отправляемых данных, преобразуйте ее в JSON с помощью своего инструмента, заархивируйте ее и исходный XML и сравните размеры.

Примечание: я поискал онлайн-конвертер XML-> JSON, и все они были ужасны - пробелы copius вне кавычек (недопустимы в JSON, изменяют размер) и имена ключей без кавычек (то же самое). Не используйте их для своего теста, иначе вы получите неверные данные.

2
ответ дан 29 November 2019 в 02:01
поделиться
Другие вопросы по тегам:

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