199 votos

Cómo deserializar un JObject .NET objeto

Yo felizmente el uso de la Newtonsoft JSON de la biblioteca. Por ejemplo me gustaría crear un JObject de un .NET objeto, en este caso, una instancia de Excepción (que puede o no ser una subclase)

if (result is Exception)
    var jobjectInstance = JObject.FromObject(result);

ahora sé que la biblioteca puede deserializar JSON texto (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.????

Así que es claro que no puede ir de lo JObject de vuelta a JSON de texto y, a continuación, utilizar la deserializar funcionalidad, pero que parece atrás para mí.

405voto

Tien Do Puntos 1262

De acuerdo con este post, es mucho mejor ahora:

// pick out one album
JObject jalbum = albums[0] as JObject;

// Copy to a static Album instance
Album album = jalbum.ToObject<Album>();

40voto

Sebastian Godelet Puntos 1093

A partir de la documentación he encontrado este

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 la clase Person deben ser compatibles con los siguientes:

class Person {
    public string Name { get; internal set; }
    public DateTime BirthDate { get; internal set; }
}

Editar

Si usted está usando una versión reciente de JSON.net por favor ver TienDo la respuesta de arriba (o abajo si usted upvote yo :P ), que es más concisa.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: