6 votos

¿Cómo deserializar GP resultado Json?

El valor de la parte de un GP Resultado puede ser cualquier tipo de GP objeto (o literal).

¿Alguien sabe de una manera general para deserializar este, preferiblemente con WCF o Json.NET?

Prefiero no tener que escribir una deserializer para cada uno de los diferentes GP de la herramienta.

{
   "results":[
      {
         "paramName":"Output",
         "dataType":"GPFeatureRecordSetLayer",
         "value":{
            "geometryType":"esriGeometryPolyline",
            "spatialReference":{
               "wkid":4326
            },
            "features":[
               {
                  "geometry":{
                     "paths":[
                        [
                           [
                              -91.6849975582907,
                              24.206096649241
                           ],
                           [
                              -91.8398132323948,
                              24.4056720735074
                           ]
                        ]
                     ]
                  },
                  "attributes":{
                     "FID":1,
                     "FNODE_":0,
                     "Shape_Length":0.25258314060805
                  }
               }
            ],
            "exceededTransferLimit":"false"
         }
      }
   ],
   "messages":[

   ]
}  

Actualización: Nunca he encontrado una manera de hacer esto. Si Esri quiere fomentar el consumo de GP servicios en una amplia variedad de clientes, se debe considerar la posibilidad de registrar el .NET tipo de nombre similar a lo que se puede hacer con Json.NET mediante el establecimiento de TypeNameHandling = Objetos.

2voto

Nathan Bedford Puntos 3157

Ver mi respuesta a tu otra pregunta, podría proporcionar un contexto y ayuda.

1voto

swilliams Puntos 19415

Json.NET apoya la deserialización en los tipos anónimos, pero no es tan útil como yo había pensado originalmente - usted tiene que proporcionar una plantilla:

var example = new { paramName = string.Empty, dataType = string.Empty };
var gpResult = JsonConvert.DeserializeAnonymousType(json, example);

Esto sería parte de la forma a lo que estás buscando, pero usted todavía tiene que hacer algún trabajo después de mover los datos en más de tipo estático de estructuras de datos. Que al menos podría tener una mejor visibilidad sobre los tipos de datos y el interruptor (o subclase) según sea necesario a partir de ahí.

Por desgracia, dada la variabilidad de los contenidos de las respuestas, no veo cómo se podría hacer una clase que sería capaz de representar correctamente / genéricamente.

Actualización:

Si estás usando C# 4, al parecer Json.NET apoya la dynamic tipo de datos. Que podría ser de más ayuda. No estoy usando aquí, así que no puedo probar y ver lo que iba a suceder, por desgracia. Puede haber algo de información de valor a lo largo de este camino.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X