Задать вопрос

Библиотека сериализации 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 библиотеки. Версия из этого репозитория работает отлично.
  • Вопрос задан
  • 1092 просмотра
Подписаться 5 Оценить 2 комментария
Решения вопроса 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
Удобная, нареканий не было.
Ответ написан
Комментировать
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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