Как десериализовать объект JObject для .NET
Я с радостью пользуюсь библиотекой Newtonsoft JSON . Например, я бы создал объект JObject
из объекта .NET, в данном случае экземпляр Exception (может быть или не быть подclassом)
if (result is Exception) var jobjectInstance = JObject.FromObject(result);
теперь я знаю, что библиотека может десериализовать текст JSON (т.е. строку) на объект
// only works for text (string) Exception exception = JsonConvert.DeserializeObject(jsontext);
но я ищу:
- Json.NET: десериализация вложенных словарей
- Сериализация нулевого значения в JSON.NET
- Как добавить тип в белый список политики сериализации GWT?
- Почему, когда конструктор аннотируется с помощью @JsonCreator, его аргументы должны быть аннотированы с помощью @JsonProperty?
- jQuery serializeArray не включает кнопку отправки, которая была нажата
// now i do already have an JObject instance Exception exception = jobjectInstance.????
Понятно, что я могу перейти от JObject
к тексту JSON, а затем использовать функциональность десериализации, но это кажется мне обратным.
- Пользовательский серализатор Gson для одной переменной (из многих) в объекте с использованием TypeAdapter
- JSON.NET Parser * кажется * будет двойной сериализацией моих объектов
- Сериализация classа, который содержит std :: string
- Есть ли у .NET 4 встроенный сериализатор / десериализатор JSON?
- «Тип не ожидается», используя DataContractSerializer - но это просто class, не смешные вещи?
- ShouldSerialize * () vs * Условный шаблон условной сериализации
- Уничтожить stream массива json по одному элементу за раз
- Использование jQuery для захвата содержимого из iframe CKEditor
Согласно этому сообщению , сейчас намного лучше:
// pick out one album JObject jalbum = albums[0] as JObject; // Copy to a static Album instance Album album = jalbum.ToObject();
Документация: конвертировать JSON в тип
Из документации я нашел это
JObject o = new JObject( new JProperty("Name", "John Smith"), new JProperty("BirthDate", new DateTime(1983, 3, 20)) ); JsonSerializer serializer = new JsonSerializer(); Person p = (Person)serializer.Deserialize(new JTokenReader(o), typeof(Person)); Console.WriteLine(p.Name);
Определение classа для Person
должно быть совместимо со следующим:
class Person { public string Name { get; internal set; } public DateTime BirthDate { get; internal set; } }
редактировать
Если вы используете последнюю версию JSON.net и не нуждаетесь в специальной сериализации, см. Ответ TienDo выше (или ниже, если вы повышаете меня: P), что является более кратким.