2017-03-27 1 views
0

이 json은 내게 정말 이상해서 그 안에있는 속성 (StudentIdCourseId)에 액세스 할 수 없습니다. 나는 그것을 설계 한 사람이 아니다.반환 된 JSON 객체의 속성에 액세스하지 않습니다

어떻게하면 C#으로 제대로 액세스 할 수 있습니까?

{ 
    "Result": [ 
    "Done", 
    { 
     "StudentId": 45, 
     "CourseId": 27 
    } 
    ] 
} 

는 또한 json2csharp을 확인하려하지만 난 그냥이 결과를 얻을 :

public class RootObject 
{ 
    public List<object> Result { get; set; } 
} 
+1

그게 전부를 표준 JSON, – mast3rd3mon

+0

특별한 아무것도 약간의 오프 - 주제 : IMHO,이 못생긴 JSON 객체입니다. 'Result'는 객체 또는 문자열 (또는 idk 어쩌면 다른 것)이 될 수있는 객체의 배열입니다. 'Result'는 무언가를 명확하게 표현하지 못합니다.'Status = Done'과'Data = {StudentId : ..., CourseId : ...} '를 가진 객체의 배열이면 더 좋을 것입니다. 그러나, 그것은 여전히 ​​** 유효하고 비 직렬화 가능 **입니다. –

+0

@ mast3rd3mon 고맙습니다. 어떻게 액세스 할 수 있습니까? – ipid

답변

0

당신은 dynamic로 목록 항목을 정의 할 수 있습니다 :

public class RootObject 
{ 
    public List<dynamic> Result { get; set; } 
} 

그런 다음 직접 원하는 속성에 액세스합니다. 그러나이 경우에 당신은 (예를 들어 try...catch를 사용하여) 자신을 존재하는지 확인해야합니다 :

var json = @"{ 
    ""Result"": [ 
    ""Done"", 
    { 
     ""StudentId"": 45, 
     ""CourseId"": 27 
    } 
    ] 
}"; 

var rootObject = JsonConvert.DeserializeObject<RootObject>(json); 

foreach (var res in rootObject.Result) 
    if (res is string) 
     Console.WriteLine(rootObject.Result[0]); 
    else 
     try 
     { 
      Console.WriteLine(res.StudentId); 
     } 
     catch 
     { 
      // Unexpected element type 
     } 
관련 문제