JSON.NET JsonConvert против .NET JavaScriptSerializer

Что лучше использовать, когда речь идет о кодировании и декодировании JSON в .NET? Я пробовал оба, и до этого момента JsonConvert, похоже, хорошо справлялся. Я успешно использовал JavaScriptSerializer в прошлом, но в недавнем прошлом у меня были некоторые проблемы с ним. Лучше ли использовать JSON.NET, чем класс .NET?

Каковы предпочтительные функции для кодирования/декодирования json с использованием соответствующей библиотеки? Я использую SerializeObject/DeSerializeObject из JSON.NET и Serialize/DeSerialize из .NET.

Спасибо


person Gabbar    schedule 29.06.2012    source источник
comment
Здесь есть хорошее сравнение с точки зрения скорости. Даже после прочтения этой статьи я использовал Newtonsoft.Json, так как он неплохо справился со своей задачей.   -  person toske    schedule 29.06.2012
comment
На веб-сайте Newtonsoft есть таблица сравнения функций и некоторые тесты, на которые стоит обратить внимание: newtonsoft.com/json/help/html/JsonNetVsDotNetSerializers.htm   -  person webStuff    schedule 12.02.2019


Ответы (2)


Я думаю, что это — именно то сравнение, которое вам нужно.

По сути, это говорит о том, что JSON.Net лучше, потому что, среди прочего...

  • быстрее
  • Имеет поддержку LINQ для JSON.
  • Может конвертировать JSON в XML и обратно

На мой взгляд, единственное положительное (и это небольшое положительное), которое я вижу для встроенного сериализатора, заключается в том, что нет дополнительной внешней зависимости для управления.

Изменить: однажды Codeplex закрывается, поэтому вы можете найти сравнение здесь Кроме того, просто найдите «Сравнение функций» на странице.

person Haohmaru    schedule 19.08.2013
comment
Быстрее Вы проверяли? Я пробовал с .NET 4.5.2 и Json.NET 9.01, и это совсем не быстрее, чем JavaScriptSerializer. Статистика скорости на официальном сайте относится к JSON.NET 5... немного устарела! - person krlzlx; 01.09.2016
comment
@krlzlx .Net 4.5.2 был выпущен в мае 2015 года, а JSON.Net 9.01 несколько месяцев назад, а я написал этот ответ 3 года назад в 2013 году. Почему бы вам не предоставить обновленный ответ со своими показателями вместо того, чтобы быть язвительным! - person Haohmaru; 01.09.2016
comment
Извините, я знаю, что ваш ответ от 2013 года. Но вы также не предоставили никаких показателей, кроме тех, которые указаны на веб-сайте Json.NET. Я был разочарован, когда тестировал его. Это все. - person krlzlx; 01.09.2016

В течение очень долгого времени мое приложение использовало JavascriptSerializer и не видело причин для миграции. Даже если сравнение производительности показывает огромный прирост в процентах, мы говорим о миллисекундах.

Но вот одна очень и очень веская причина для миграции: JavascriptSerializer недоступен в .Net Core, потому что он является частью System.Web. Поэтому, если вы используете JavascriptSerializer, вы застряли и должны перейти на JSON.net.

person frenchie    schedule 02.04.2017
comment
ядро asp net по умолчанию использует json.net. - person Liang; 04.04.2018
comment
Ядро .Net теперь имеет Систему. Сериализаторы Text.Json, так что это уже неверно. MS сейчас хотите, чтобы вы использовали этот сериализатор, а не Newtonsoft. Хотя, чтобы повторить вашу точку зрения (выше), я не видел необходимости перемещать ТБХ. - person Liam; 15.09.2020