Question

J'ai consulté cette analyse JSON à l'aide de Json.net , question et réponse. proche de ce dont j'ai besoin. La différence critique est que je dois analyser un tableau de paires x, y qui forment une ou plusieurs lignes par enregistrement. Voici un exemple de ma contribution

{
"displayFieldName" : "FACILITYID", 
"fieldAliases" : {
"FACILITYID" : "Facility Identifier", 
}, 
"geometryType" : "esriGeometryPolyline", 
"spatialReference" : {
  "wkid" : 4326
}, 
"features" : [
{
  "attributes" : {
    "FACILITYID" : "", 
    "OBJECTID" : 1, 
  }, 
  "geometry" : 
  {
    "paths" : 
    [
      [
        [-80.3538239379999, 27.386884271], 
        [-80.3538100319999, 27.3868901900001], 
        [-80.3538157239999, 27.3869008510001]
      ]
    ]
  }
}, 
{
  "attributes" : {
    "FACILITYID" : "", 
    "OBJECTID" : 2, 
  }, 
  "geometry" : 
  {
    "paths" : 
    [
      [
        [-80.3538239379999, 27.386884271], 
        [-80.3538295849999, 27.3868948420001]
      ]
    ]
  }
}
]
}

(Consultez http: / /sampleserver1.arcgisonline.com/ArcGIS/rest/services/WaterTemplate/WaterDistributionNetwork/MapServer/9/query?outFields= * & amp; where = OBJECTID% 3C20 & amp = f = pjson pour la liste complète)

Ce que je dois faire est d’analyser les tableaux de ["fonctions"] ["géométrie"] ["chemins"] en lignes composées de paires x, y. Voici comment obtenir tous les chemins (un par "enregistrement" comme dans le tableau de fonctionnalités):

var allPaths = from p in jsonObject["features"].Children()["geometry"]
               select p["paths"];

Cela me donne mes chemins, à partir desquels je peux ensuite traiter chaque tableau de points à son tour:

foreach (var eachPolylineInPath in allPaths)
{
  IEnumerable<Point> linePoints = from line in eachPolylineInPath.Children()
                                  select new Point(
                                                  (double) line[0],
                                                  (double) line[1],
                                                  double.NaN);
}

C'est là que je reste coincé. J'essaie différents transtypages à partir des instructions JArray et LINQ-y, mais je n'arrive toujours pas à obtenir des résultats nuls ou des exceptions à la mélodie des valeurs enfant JProperty.

Espérons que quelqu'un a déjà traité la conversion de tableaux de tableaux dans JSON.NET à l'aide de LINQ et puisse expliquer l'erreur stupide que je dois commettre ou la réponse évidente que je ne parviens pas à voir.

Était-ce utile?

La solution

On dirait que les chemins sont un tableau de tableaux de points, donc si vous voulez un IEnumerable pour chaque chemin, vous avez besoin de:

var allPaths = from p in jsonObject["features"].Children()["geometry"]
               select p["paths"].Children();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top