Я с радостью использую библиотеку Newtonsoft JSON . Например, я бы создал объект JObject
из .NET, в данном случае экземпляр Exception (может быть или не быть подклассом)
if (result is Exception)
var jobjectInstance = JObject.FromObject(result);
теперь я знаю, что библиотека может десериализовать текст JSON (т.е. строку) в объект
// only works for text (string)
Exception exception = JsonConvert.DeserializeObject<Exception>(jsontext);
но то, что я ищу, это:
// now i do already have an JObject instance
Exception exception = jobjectInstance.????
Ясно, что я могу JObject
вернуться к тексту JSON и затем использовать функцию десериализации, но это кажется мне обратным.
T
, мне требовалось что-то вродеresult=(value is JObject) ? ((JObject)value).ToObject<T>() : (T)default(T);
успешного преобразования (примечание -value
это объект, поступающий из базы данных, который может быть JObject или что-то еще, в этом случае результат должен быть нулевым).jobject.ToObject(myObject.GetType())
если вы не знаете тип объекта.Из документации я нашел это
Определение класса для
Person
должно быть совместимо со следующим:редактировать
Если вы используете последнюю версию JSON.net и не нуждаетесь в настраиваемой сериализации, см. Ответ TienDo выше (или ниже, если вы проголосуете за меня: P), что более кратко.
источник
Слишком поздно, на тот случай, если кто-то ищет другой путь:
источник