C sharp - deserializar objeto json dependiendo propiedades c#

 
Vista:

deserializar objeto json dependiendo propiedades c#

Publicado por derobpe (1 intervención) el 21/12/2021 14:14:32
Hola a todos,
Perdonar pero ya no se donde buscar.
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 la misma geometría.
Dependiendo del type de geometry necesito parsear diferente puntos y poligonos.
Ejemplo de respuesta json con dos objetos con diferente type:
{
"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 intento o 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 claro, tan solo funciona para uno de los types: Polygon
}

Debe de haber una forma sencilla, pero no se como hacerlo, espero alguien me pueda ayudar.

Gracias por su tiempo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 7
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

deserializar objeto json dependiendo propiedades c#

Publicado por Ismael (10 intervenciones) el 26/03/2022 19:30:05
Hola,
Has probado de usar el generador de clases del enlace por ejemplo?
A partir de un JSON de muestra te genera las clases.
http://json2csharp.com/
La aproximación que haces de NewtonSoft es válida, en vez de usar una clase específica puedes intentar que lo cree a una clase de tipo object y luego intentar castear a las clases probables en los casos que te esté fallando y controlarlo con algún try...

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar