[ Foro de C# ]

Deserializar Objeto Json en función de una de sus propiedades

21-Dec-2021 14:00
Invitado (derobpe)
0 Respuestas

Hola a todos,
Perdonar por mi vocabulario poco técnico.
Tengo un programa en C# que debe pintar cierta area en un mapa.
La petición al repositorio de areas me devuelve un JSON en el que el objeto no siempre trae el mismo tipo de geometría.
Dependiendo del type de geometry necesito parsear diferente puntos y poligonos.
Ejemplo de respuestas json:
{
"status": "success",
"data": [
{
"_id": "AREA-1",
"geometry": {
"type": "Point",
"coordinates": [
38.376487,
27.011042
]
},
"radius": 20
},
{
"_id": "AREA-2",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
38.376487,
27.011042
],
[
38.366487,
27.011042
],
[
38.366487,
27.001041999999999
],
[
38.376487,
27.011042
]
]
]
},
"radius": 0
}
]
}

Mi aproximación:
Estoy utilizando la librería Newtonsoft
RootArea sasAreas = JsonConvert.DeserializeObject<RootArea>(jsonResp, jsonSerializerSettings);

public class RootArea
   {
       public string status { get; set; }
       public List<area> data { get; set; }
   }
public class area
   {
       public string _id { get; set; }
       public Geometry geometry { get; set; }
       public double radius { get; set; }
   }
public class Geometry
       {
           public string type { get; set; }
           public List<List<List<double>>> coordinates { get; set; } //pero solo funciona para uno de los tipos
       }

Debe de haber una forma de utilizar un distinto tipo de Geometry según sea Punto o Poligono, pero no se donde hacer esa distinción -.-

Gracias por su tiempo.




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)