2016-03-23 3 views
0

Я использовал несколько сериализаторов из .Net 4.x некоторое время и думаю, что унаследовал их от .Net 3,5 раза. Я просто понял, что большинство из этих сериализаторов тогда не смогли сериализовать и десериализовать любой словарь C# в целом.Какие сериализаторы JSON могут обрабатывать словарь C# <TKey,T>

В коде я рефакторинг прямо сейчас, я вижу обходные как потоковые из списка <T> вместо строки словаря <, T > (который я считаю работу вокруг и хочу уплотнительные избежать и достаточно использовать встроенный - в возможностях сериализатора).

Каков статус вашего любимого сериализатора JSON?

Также: вы знаете, совместим ли ваш сериализатор с JSON API? (JSONAPI.org)

+0

Возможный дубликат [Как преобразовать словарь в строку JSON в C#?] (Http://stackoverflow.com/questions/5597349/how-do-i-convert-a-dictionary-to-a- json-string-in-c) –

+0

Используйте 'ToList()' в словаре для преобразования в 'List >' –

+0

Спасибо Alex. Это, вероятно, справедливая работа, если сериализатор не делает что-то подобное из коробки. Этот вопрос имел в виду больше о опытах с сериализаторами, которые действительно поддерживают сериализацию словарей. И: Я часто использовал эту технику при сериализации XML и не очень любил ее из-за «беспорядка» KeyValuePair, сгенерированного в выходном файле. Не с JSON, я полагаю. Стоит попробовать. Еще раз спасибо. –

ответ

0

http://www.newtonsoft.com/json - тот, который я использовал больше всего. Один из самых быстрых и очень гибких. Это сериализатор по умолчанию, используемый asp.net MVC/WebAPI

https://github.com/kevin-montrose/Jil Используется StackOverflow и является очень быстро.

Jsonapi - это проблема более высокого уровня. Это не изменяет, как json де-сериализован. Это всего лишь шаблон, соглашение, стандарт, схема, для формы/формата для возврата ваших данных. Он не имеет большого отношения к выбору сериализатора.

+0

Спасибо, что указал мне на Джила. Выглядит интересно и может быть хорошим совпадением для меня в текущем проекте. –

+0

Jsonapi: Да, вы правы. Похоже, что дальше идут соглашения о том, как хранить/обрабатывать ссылки/отношения, а затем некоторые. Необходимо увидеть, как я получаю свой уровень WebService для работы со стандартным адаптером API JSON для Ember. –

0

После многих лет опыта различных сериализаторов и пытаемся получить их, чтобы справиться со всего родом типов коллекций, я пришел к выводу:

Часто лучше конвертировать мои сложные объекты, в простой DTO (объекты передачи данных), которые JUST имеют простые общедоступные свойства (или поля), с массивами для всех «коллекций». И тогда ВСЕ сериализаторы могут справиться, в том числе сериализаторы, о которых я еще не знаю, но придется переносить на следующий год ....

Другими словами, напишите больше кода, но, по крайней мере, это код, который я могу написать во сне! Automapper также может помочь уменьшить количество пользовательского кода, необходимого для создания DTO.

+0

Спасибо за ваш комментарий, Ян. Это, наверное, немного философский подход к использованию. Уровень DTO для каждого внутреннего класса, который я хочу сделать постоянным, имеет очарование. С сериализацией классов C# в XML я был поклонником этого подхода. В настоящее время я немного больше склоняюсь к тому, чтобы использовать классы C# так же, как и на стороне клиента/JavaScript. –