Spojrzałem na to pytanie i odpowiedź Parsing JSON using Json.net i jest blisko tego, czego potrzebuję. Krytyczna różnica polega na tym, że muszę przeanalizować tablicę x, y par tworzących jedną lub więcej linii na rekord. Oto przykład z mojego wejściaJSON.NET i tablice używające LINQ
{
"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]
]
]
}
}
]
}
(Sprawdź http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/WaterTemplate/WaterDistributionNetwork/MapServer/9/query?outFields= * & gdzie = OBJECTID% 3C20 & f = pjson za pełną listę)
Co muszę zrobić, to analizować [ "cechy"] ["geometria"] ["ścieżki"] zawiera tablice składające się z par x, y. Oto jak ja dostaję wszystkich ścieżek (jeden za „rekord”, jak w tablicy funkcji):
var allPaths = from p in jsonObject["features"].Children()["geometry"]
select p["paths"];
To daje mi moje ścieżki, z której można następnie przetwarzać każdą tablicę punktową z kolei:
foreach (var eachPolylineInPath in allPaths)
{
IEnumerable<Point> linePoints = from line in eachPolylineInPath.Children()
select new Point(
(double) line[0],
(double) line[1],
double.NaN);
}
Tam utknąłem. Próbuję różnych rzutów z instrukcji JArray i LINQ-y, ale wciąż otrzymuję wyniki zerowe lub nie można uzyskać dostępu do wyjątków dotyczących wartości wartości potomnych JProperty.
Mam nadzieję, że ktoś już zajmował się konwertowaniem tablic tablic w JSON.NET za pomocą LINQ i może wyjaśnić głupi błąd, który muszę popełnić, lub oczywistą odpowiedź, której nie widzę.
Jesteś przybity go - Brakowało mi the Children() na p [” ścieżki "], więc moje 4-godzinne poszukiwanie prawdy zostało zakończone. Dziękuję bardzo. – Dylan