Cómo deserializar un JObject al objeto.NET
json exception (2)
De la documentación encontré esto
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);
La definición de clase para Person
debe ser compatible con lo siguiente:
class Person {
public string Name { get; internal set; }
public DateTime BirthDate { get; internal set; }
}
Editar
Si está utilizando una versión reciente de JSON.net y no necesita serialización personalizada, consulte la respuesta anterior de TienDo (o la siguiente si me votó positivamente: P), que es más conciso.
Felizmente uso la biblioteca Newtonsoft JSON . Por ejemplo, crearía un JObject
partir de un objeto .NET, en este caso una instancia de Exception (podría ser o no una subclase)
if (result is Exception)
var jobjectInstance = JObject.FromObject(result);
ahora sé que la biblioteca puede deserializar texto JSON (es decir, una cadena) a un objeto
// only works for text (string)
Exception exception = JsonConvert.DeserializeObject<Exception>(jsontext);
pero lo que estoy buscando es:
// now i do already have an JObject instance
Exception exception = jobjectInstance.????
Bueno, está claro que puedo pasar de JObject
al texto JSON y luego usar la funcionalidad deserializar, pero eso me parece retrógrado.
Según esta post , ahora es mucho mejor:
// pick out one album
JObject jalbum = albums[0] as JObject;
// Copy to a static Album instance
Album album = jalbum.ToObject<Album>();
Documentación: Convierte JSON a un Tipo