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:
{
Mi intento o aproximación:
Estoy utilizando la librería Newtonsoft
RootArea sasAreas = JsonConvert.DeserializeObject<RootArea>(jsonResp, jsonSerializerSettings);
public class RootArea
Debe de haber una forma sencilla, pero no se como hacerlo, espero alguien me pueda ayudar.
Gracias por su tiempo.
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": [
}"data": [
{
{
]"_id": "AREA-1",
"geometry": {
"radius": 20
},"geometry": {
"type": "Point",
"coordinates": [
},"coordinates": [
38.376487,
27.011042
]27.011042
"radius": 20
{
"_id": "AREA-2",
"geometry": {
"radius": 0
}"geometry": {
"type": "Polygon",
"coordinates": [
},"coordinates": [
[
][
[
[
[
]38.376487,
27.011042
],27.011042
[
38.366487,
27.011042
],27.011042
[
38.366487,
27.001041999999999
],27.001041999999999
[
38.376487,
27.011042
]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 class areapublic string status { get; set; }
public List<area> data { get; set; }
}public List<area> data { get; set; }
{
public class Geometrypublic string _id { get; set; }
public Geometry geometry { get; set; }
public double radius { get; set; }
}public Geometry geometry { get; set; }
public double radius { get; set; }
{
public string type { get; set; }
public List<List<List<double>>> coordinates { get; set; } //pero claro, tan solo funciona para uno de los types: Polygon
}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


0