Подтвердить что ты не робот

Преимущества использования приложения /json над текстом/plain?

Есть ли преимущество в производительности использования приложения типа контента /json, отправляющего объект, сериализованный в json через text/plain? Я знаю, что многие фреймворки (например, Spring) могут отображать и сериализовывать данные на основе типа содержимого, но в целом я считаю, что этот процесс достаточно прост, что не является веской причиной использовать приложение /json для текста /plain для Объекты JSON.

4b9b3361

Ответ 1

Предположим, что вы говорите об использовании JSON в сравнении с пользовательским форматом (с использованием типа MIME text/plain) для передачи структурированных данных.

Производительность может быть разбита на разные компоненты; например.

  • относительное время, затрачиваемое на кодирование содержимого в формате,
  • относительное время, затраченное на декодирование формата, чтобы предоставить исходный контент, и
  • относительный размер кодированного содержимого.

В теории можно сказать, что гипотетический оптимально спроектированный и реализованный пользовательский формат будет не медленнее или не менее плотным, чем JSON. ( "Доказательство" очевидно. Выберите оптимальную реализацию JSON и внесите некоторые незначительные изменения в формат, который не влияет на производительность.)

В действительности, однако, вам нужно сравнить производительность фактических форматов и фактических реализаций. Поэтому ответ на этот вопрос зависит от того, насколько хорошо вы работаете над проектированием и внедрением формата и связанного с ним программного обеспечения для кодирования/декодирования. Кроме того, это также зависит от того, как вы реализуете JSON. Существует несколько серверных JSON-библиотек с различными характеристиками производительности, а также различные способы отображения данных из/в "родные" структуры данных.

Это подводит нас к реальным преимуществам JSON (и XML) в пользовательских форматах.

  • С JSON и XML доступны библиотеки для любого основного языка, который вы выбрали для помощи в кодировании и декодировании контента. С пользовательским форматом вам нужно перевернуть свою собственную кодировку/декодирование для сторон клиента и сервера.

  • В JSON и XML есть стандарты, которые говорят, что хорошо сформировано, что позволяет другим людям внедрять кодировщики/декодеры. В специальном формате вы должны сами написать спецификацию, если хотите, чтобы другие люди могли реализовать ваш формат.

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

  • Простота изменения. Это относительно простой вопрос для разработки формата JSON/XML. Но с пользовательским форматом у вас есть (по крайней мере) больше работы, и в зависимости от ваших вариантов дизайна это может быть очень сложно.

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

Followup

Но что, если вместо этого вы предполагаете, что я не использую собственную реализацию и сравниваю отправку JSON с типом mime text/plain с типом application/json?

Тогда ответ заключается в том, что он отличается от почти не.

  • Вы сохраняете 6 байтов в заголовке запроса HTTP или ответа, потому что строка типа mime короче, но это не имеет значения для типичных HTTP-сообщений, размеры которых измеряются в тысячах байтов.
  • Использование типа содержимого "text/plain" не имеет никакого отношения к работе, которая должна быть выполнена для кодирования/декодирования сообщений запроса или ответа... кроме времени, затраченного на сравнение/копирование 6 дополнительных байтов, что вероятно, слишком мал для измерения.

Кроме того, использование неточного MIME-типа (возможно) является нарушением спецификаций HTTP. Если вы это сделаете:

  • более вероятно, что получатель будет неправильно реагировать; например не удалось его декодировать или показать в окне браузера, а

  • вы можете нарушить согласование типа содержимого HTTP, считая, что ваш клиент или сервер его использует.

Короче говоря, я не могу придумать никаких веских оснований для этого и несколько веских причин не делать этого.

Ответ 2

JSon - это в основном формат обычного текста. Таким образом, он не может быть быстрее, чем лучший формат обычного текста. (Это может быть быстрее, чем плохо выбранный текстовый формат). JSon используется, потому что он упрощает кодирование и декодирование и достаточно читабельна для многих типов данных, особенно сложных.

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

Ответ 3

JSON в конечном итоге станет широко распространенным форматом вместе с xml. Прием JSON растет довольно быстро, что делает его более разумным выбором по тексту, сохраняя в виду будущее.

Ответ 4

JSON, вероятно, будет быстрее из-за больших оптимизаций (код C) для JSON-engine. Например, V8 JSON.parse() работает очень быстро.

Ответ 5

Вот описание json.org(LOL), и я не мог согласиться больше:

JSON: альтернатива без жира без XML

Здесь вы найдете библиотеки Json для почти всех языков.

http://www.json.org/

Json настолько прост с JQuery http://api.jquery.com/jQuery.getJSON/

Один из лучших текстов, которые я нашел о Json http://ascherconsulting.com/what/are/the/advantages/of/using/json/

Поскольку JSON был разработан для цель сериализации и неэриализующие данные, отправляемые и из приложений JavaScript, преимущества использования JSON связаны с преимущества JSON над другими средствами сериализации. Самый известный средства сериализации данных для передача в приложения и обратно в настоящее время является XML. Тем не менее, XML является довольно громоздкие средства сериализации. Во-первых, отправитель должен кодировать данные, которые должны быть основаны на сериализации по определению типа документа, которое получатель понимает. Делать это создает много дополнительных дополнений вокруг фактических данных независимо от того, Используется DTD. Итак, размер XML документы часто довольно велики в сравнение с фактическим набором которые они содержат. Во-вторых, получатель должен получить поток XML и декодировать данные для того, чтобы затем поместите эти данные в память. В сравнение, сериализация данных использование JSON отправителем относительно быстро и компактно, потому что структура JSON отражает структура стандартных данных программирования типы и механизм кодирования добавляет только минимальное количество символов необходимо указать структуру и значение данных. Как только получатель получает сериализованные данные JSON, то единственная обработка, требующая сделать это, чтобы оценить текст строка с использованием JavaScript встроенная функция eval или совместимая функции на другом языке. другим стандартным сравнением является YAML, который способен сериализовать сложные наборов данных без использования DTD и требуется более простой парсер для обоих читать и писать, чем XML. Однако, даже упрощенные партизаны YAML обычно требуют больше времени и генерировать большие сериализованные данные потоки, чем JSON.

Ответ 6

Из других преимуществ строки JSon, отформатированные, являются похожим объявлением JavaScript javascript, поэтому они позволяют упростить и ускорить разбор.

Строка JSon: {имя: значение name2: значение}

Очень легко преобразовать объект javascript.