serialize objeto newtonsoft newton net jsonconvert example crear c# .net json mono json-deserialization

objeto - newtonsoft.json c#



¿Cómo deserializar una matriz JSON sin nombre? (1)

Solo devuelve una matriz

var locs = Location.DeserializedJson(json);

public class Location { public string Precision; public double Latitude; public double Longitude; public string Address; public string City; public string State; public string Zip; public string Country; public static Location[] DeserializedJson(string responseJson) { JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); return jsSerializer.Deserialize<Location[]>(responseJson); } }

PD: tenga en cuenta que [Serializable] s son innecesarios.

No puedo entender cómo escribir una clase para deserializar una lista de objetos de JSON en .Net.

De la especificación JSON, aprendemos que esto es JSON válido:

[ { "precision": "zip", "Latitude": 37.7668, "Longitude": -122.3959, "Address": "", "City": "SAN FRANCISCO", "State": "CA", "Zip": "94107", "Country": "US" }, { "precision": "zip", "Latitude": 37.371991, "Longitude": -122.026020, "Address": "", "City": "SUNNYVALE", "State": "CA", "Zip": "94085", "Country": "US" } ]

Así que construí esta clase para manejar la deserialización:

using System; using System.Collections.Generic; using System.Web.Script.Serialization; namespace JsonRfc{ [Serializable] public class Location { public string Precision; public double Latitude; public double Longitude; public string Address; public string City; public string State; public string Zip; public string Country; public Location(){} public static Location DeserializedJson(string responseJson) { JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); return jsSerializer.Deserialize<Location>(responseJson); } } [Serializable] public class Locations { public List<Location> Location; public Locations(){} public static Locations DeserializedJson(string responseJson) { JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); return jsSerializer.Deserialize<Locations>(responseJson); } } }

El objeto deserializado es nulo a pesar de tener Json válido pasado al método.

También probé otras cosas que fallaron: hacer que Locations sea una matriz en lugar de una lista (así que: public Location [] Location;), y deserializar a la ubicación aunque el Json contenga una matriz de ubicaciones.

Entonces, ¿cómo se espera que un desarrollador de .Net deserialice una matriz de objetos? Esperaba que lo anterior funcionara y no funciona.