이 질문에 대한 답변이 Parsing JSON using Json.net이고 필요한 항목과 비슷합니다. 중요한 차이점은 레코드 당 하나 이상의 줄을 구성하는 x, y 쌍의 배열을 구문 분석해야한다는 것입니다. 여기 내 입력의 예 [ "기능"]LINQ를 사용하는 JSON.NET 및 배열
{
"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]
]
]
}
}
]
}
은 내가해야 할 것은 구문 분석입니다 (전체 목록은 = pjson f를 * & = OBJECTID % 3C20 & http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/WaterTemplate/WaterDistributionNetwork/MapServer/9/query?outFields= 체크 아웃)입니다 [ "geometry"] [ "paths"] x, y 쌍으로 구성된 행에 배열됩니다. 여기에 내가 (한 당 "레코드"기능을 배열로) 모든 경로를 받고 있어요 방법은 다음과 같습니다 내게 다음 차례로 각 점의 배열을 처리 할 수있는 내 경로를 제공
var allPaths = from p in jsonObject["features"].Children()["geometry"]
select p["paths"];
:
foreach (var eachPolylineInPath in allPaths)
{
IEnumerable<Point> linePoints = from line in eachPolylineInPath.Children()
select new Point(
(double) line[0],
(double) line[1],
double.NaN);
}
내가 갇혀있는 곳입니다. JArray 및 LINQ-y 문에서 여러 캐스트를 시도하고 있지만 null 결과가 계속 발생하거나 JProperty 자식 값 튜닝에 대한 예외에 액세스 할 수 없습니다.
누군가가 이미 LINQ를 사용하여 JSON.NET에서 배열 배열 변환을 처리 했으므로 내가 작성해야하는 어리석은 실수 또는 분명히 볼 수없는 대답을 설명 할 수 있기를 바랍니다.
당신은 그것을 못을 박았다 - I는 P의 [에()는 어린이 실종됐다 " 경로 "] 그래서 진리에 대한 나의 4 시간 검색은 끝난다. 정말 고맙습니다. – Dylan