2009-09-14 2 views
5

이 질문에 대한 답변이 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에서 배열 배열 변환을 처리 했으므로 내가 작성해야하는 어리석은 실수 또는 분명히 볼 수없는 대답을 설명 할 수 있기를 바랍니다.

답변

9

이 경로처럼 보이는 것은 그래서 당신은 각 경로에 대한 IEnumerable을 원하는 가정, 점의 배열의 배열, 당신이 필요합니다

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

당신은 그것을 못을 박았다 - I는 P의 [에()는 어린이 실종됐다 " 경로 "] 그래서 진리에 대한 나의 4 시간 검색은 끝난다. 정말 고맙습니다. – Dylan