serialize property newtonsoft net name jsonpropertyattribute jsonproperty jsonignore example deserialize attribute c# json.net deserialization

c# - property - newtonsoft json serialize vb net



Newtonsoft JSON Deserializar (3)

Mi JSON es el siguiente:

{"t":"1339886","a":true,"data":[],"Type":[[''Ants'',''Biz'',''Tro'']]}

Encontré la biblioteca deserialize de Newtonsoft JSON.NET para C #. Traté de usarlo de la siguiente manera:

object JsonDe = JsonConvert.DeserializeObject(Json);

¿Cómo puedo acceder al objeto JsonDe para obtener todos los datos "Tipo"? Lo intenté con un bucle pero no funciona porque el objeto no tiene un enumerador.


Una solución mucho más fácil: usar un tipo dinámico

A partir de Json.NET 4.0 Versión 1, existe soporte dynamic nativo. No necesita declarar una clase, solo use dynamic :

dynamic jsonDe = JsonConvert.DeserializeObject(json);

Todos los campos estarán disponibles:

foreach (string typeStr in jsonDe.Type[0]) { // Do something with typeStr } string t = jsonDe.t; bool a = jsonDe.a; object[] data = jsonDe.data; string[][] type = jsonDe.Type;

Con dynamic no es necesario crear una clase específica para contener sus datos.


De acuerdo con la documentación de Newtonsoft , también puede deserializar un objeto anónimo como este:

var definition = new { Name = "" }; string json1 = @"{''Name'':''James''}"; var customer1 = JsonConvert.DeserializeAnonymousType(json1, definition); Console.WriteLine(customer1.Name); // James


Puede implementar una clase que contenga los campos que tiene en su JSON

class MyData { public string t; public bool a; public object[] data; public string[][] type; }

y luego use la versión genérica de DeserializeObject:

MyData tmp = JsonConvert.DeserializeObject<MyData>(json); foreach (string typeStr in tmp.type[0]) { // Do something with typeStr }

Documentación: Serialización y deserialización de JSON