Библиотека сериализации JSON, поддерживающая наследование?

Доброго времени суток. Чем можно выполнить (де)сериализацию подобных классов?
public class DataA
	{
		public Int32 Value;
	}

	public class DataB : DataA
	{
		public Double Value2;
	}

Пока единственное, что смогло переварить подобное корректно (т.е. "съев" поле типа DataA, содержащее в себе экземпляр DataB корректно десериализовать также DataB) - XmlSerializer. С ним все хорошо, но уж больно формат тяжеловесный и не умеет, например, сериализацию словарей. LitJson полиморфизм не поддерживает, с JsonFx возникло две проблемы - не удалось настроить TypeHinting, который вроде как для этого предназначен и в упор отказывается сериализовать публичные поля - только свойства или приватные поля.
Может кто работал с JsonFx и подскажет, как его заставить работать, или может быть есть еще какое-либо библиотеки?

P.S. дело происходит под Unity3d, поэтому DataContractJsonSerializer использовать не могу, а JSON.Net for Unity покупать пока не готов.
P.P.S. случайно забыл убрать автосвойства - хотелось бы сериализовать простые публичные поля, т.к. у автосвойств есть приватное автоматически создаваемое поле "backing...", которое jsonfx пытается сериализовать.
P.P.P.S. извиняюсь за некорректный вопрос, использовал устаревшую версию адаптированной под unity3d библиотеки. Версия из этого репозитория работает отлично.
  • Вопрос задан
  • 1078 просмотров
Решения вопроса 3
@asArtem
Json.net поддерживает наследование, более того, он корректно умеет даже конвертировать DataA в DataB если до этого было приведение к базовому типу (DataA b = new DataB и b был сохранен в json а потом нужно получить DataB b2 = Json.Deserialize<>(jsonString) ). Вся фишка в сеттинге TypeNameHandling.
stackoverflow.com/questions/8513042/json-net-seria...
www.newtonsoft.com/json/help/html/serializetypenam...
Ответ написан
Комментировать
@kttotto
пофиг на чем писать
Пользуюсь newtonsoft
Удобная, нареканий не было.
Ответ написан
Комментировать
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы