Z przyjemnością korzystam z biblioteki JSON firmy Newtonsoft . Na przykład utworzyłbym JObject
z obiektu .NET, w tym przypadku wystąpienie wyjątku (może, ale nie musi być podklasą)
if (result is Exception)
var jobjectInstance = JObject.FromObject(result);
teraz wiem, że biblioteka może przekształcić obiekt JSON w tekst (tj. ciąg) do obiektu
// only works for text (string)
Exception exception = JsonConvert.DeserializeObject<Exception>(jsontext);
ale szukam:
// now i do already have an JObject instance
Exception exception = jobjectInstance.????
Cóż, jasne jest, że mogę przejść z JObject
powrotem do tekstu JSON, a następnie użyć funkcji deserializacji, ale wydaje mi się to odwrotnie.
T
, potrzebowałem czegoś takiego, jakresult=(value is JObject) ? ((JObject)value).ToObject<T>() : (T)default(T);
jego pomyślna konwersja (uwaga -value
to obiekt pochodzący z bazy danych, który może być JObject lub coś innego, w którym to przypadku wynik powinien być zerowy).jobject.ToObject(myObject.GetType())
jeśli nie znasz typu obiektu.Z dokumentacji znalazłem to
Definicja klasy
Person
powinna być zgodna z następującymi:Edytować
Jeśli używasz najnowszej wersji JSON.net i nie potrzebujesz niestandardowej serializacji, zapoznaj się z odpowiedzią TienDo powyżej (lub poniżej, jeśli głosujesz: P), która jest bardziej zwięzła.
źródło
Za późno, na wypadek, gdyby ktoś szukał innego sposobu:
źródło