solicitud serializar recorrer por para objeto grande era enviar deserializarse deserializar demasiado crear convertir como c# json json.net

serializar - recorrer json c#



Deserializando JSON con nombres de objetos desconocidos (1)

Parece que deberías poder deshacerte de tu clase de Measures . En su lugar, coloque el diccionario directamente en su clase de Body :

public class Body { public string _id { get; set; } public Place place { get; set; } public int mark { get; set; } public Dictionary<string, SingleModule> measures { get; set; } public string[] modules { get; set; } }

Como asunto aparte, recomiendo seguir los convenios de nomenclatura de .NET para sus propiedades, y usar [JsonProperty("measures")] etc. para indicarle a Json.NET cómo traducir sus propiedades en JSON.

Estoy tratando de deserializar una respuesta JSON de una API. El JSON se ve así (las direcciones MAC y la ubicación están alteradas):

{ "body" : [{ "_id" : "da:87:54:26:53:97", "place" : { "location" : [-23.334961, 47.398349], "altitude" : 30, "timezone" : "Europe//London" }, "mark" : 3, "measures" : { "f2:bf:a7:6f:e7:e8" : { "res" : { "1469997248" : [20.4, 66] }, "type" : ["temperature", "humidity"] }, "42:b7:48:59:7c:4b" : { "res" : { "1469997263" : [1016.7] }, "type" : ["pressure"] } }, "modules" : ["f2:bf:a7:6f:e7:e8"] } ], "status" : "ok", "time_exec" : 0.034152030944824, "time_server" : 1469997417 }

El problema es el bloque de medidas. Como el nombre del objeto está cambiando, no sé cómo deserializarlo correctamente en un objeto C #. Encontré un problema similar aquí con la solución para usar un dictonary ; sin embargo, si lo intento de esta manera, obtengo un directorio nulo.

Este es mi método de deserialización:

APIResponse apiResponse = JsonConvert.DeserializeObject<APIResponse>(await content.ReadAsStringAsync());

Y esta es la clase APIResponse:

public class APIResponse { public Body[] body { get; set; } public string status { get; set; } public float time_exec { get; set; } public int time_server { get; set; } } public class Body { public string _id { get; set; } public Place place { get; set; } public int mark { get; set; } public Measures measures { get; set; } public string[] modules { get; set; } } public class Place { public float[] location { get; set; } public float altitude { get; set; } public string timezone { get; set; } } public class Measures { public Dictionary<string, SingleModule> singlemodules{ get; set; } } public class SingleModule { public Res res { get; set; } public string[] type { get; set; } } public class Res { public MeasuredData measuredData { get; set; } } public class MeasuredData { public float[] values { get; set; } }

¿Hay alguna manera de deserializar las medidas fácilmente?