Felizmente uso la biblioteca Newtonsoft JSON . Por ejemplo, crearía un a JObject
partir de un objeto .NET, en este caso una instancia de Exception (podría o no ser una subclase)
if (result is Exception)
var jobjectInstance = JObject.FromObject(result);
ahora sé que la biblioteca puede deserializar el texto JSON (es decir, una cadena) a un objeto
// only works for text (string)
Exception exception = JsonConvert.DeserializeObject<Exception>(jsontext);
pero lo que busco es:
// now i do already have an JObject instance
Exception exception = jobjectInstance.????
Bueno, está claro que puedo JObject
volver al texto JSON y luego usar la funcionalidad de deserialización, pero eso me parece al revés.
T
, requería algo comoresult=(value is JObject) ? ((JObject)value).ToObject<T>() : (T)default(T);
convertirlo con éxito (nota:value
es un objeto que proviene de una base de datos que podría ser un JObject u otra cosa en cuyo caso el resultado debería ser nulo).jobject.ToObject(myObject.GetType())
si no conoces el tipo de objeto.De la documentación encontré esto
La definición de clase para
Person
debería ser compatible con lo siguiente:Editar
Si está utilizando una versión reciente de JSON.net y no necesita una serialización personalizada, consulte la respuesta de TienDo arriba (o abajo si me votó: P), que es más conciso.
fuente
Demasiado tarde, por si alguien está buscando otra manera:
fuente