2014-03-04 1 views
0

RESTSharp을 사용하여 API 호출의 결과를 받고 deserialize합니다. 응답은 JSON입니다.RESTSharp : 역 직렬화 된 클래스에서 값 액세스

public class JsonResponseClass 
{ 
    public class Selector 
    { 
     public static string verb { get; set; } 
    } 

    public class Points 
    { 
     public int definition { get; set; } 
    } 
} 

내가 응답 얻으려면 다음을 수행하십시오 :

var response = client.Execute<JsonResponseClass>(request); 
var resData = response.Data; 

가 어떻게/인쇄 값은 위에서받은 읽습니까을 나는이처럼 보이는 repsonse에 대한 클래스를 만들었습니다? 예를 들어 위의 역 직렬화 된 응답에서 값 동사와 정의를 어떻게 출력합니까?

답변

2

당신은 클래스 둥지로 생각하지 않는 :

resData 변수 그래서 당신은이 같은 필드의 액세스해야하는 JsonResponseClass에 저장된 요청의 데이터가 포함되어 있습니다. 대신, 각 유형의 특성을 루트 오브젝트의 클래스에 추가하십시오. 장소에두고

public class JsonResponseClass 
{ 
    public Selector selector { get; set; } 

    public Points points { get; set; } 
} 

public class Selector 
{ 
    public static string verb { get; set; } 
} 

public class Points 
{ 
    public int definition { get; set; } 
} 

이 코드는 예상대로 작동합니다

var response = client.Execute<JsonResponseClass>(request); 
var resData = response.Data; 
var verb = resData.selector.verb; 
var definition = resData.points.definition; 
+0

고마워. 그것은 작동합니다. 사소한 질문을하게되어서 죄송 합니다만, 이렇게하려면 다음과 같이하십시오 :'var res = funcallthatreturnsresData()';; 나는'nullpointerexception'을 얻는다. 뭐가 문제 야? – Maxsteel

+0

nullpointer는 'null'로 설정된 변수의 재미있는 단어입니다. 그래서 기본적으로 초기화되지 않은 변수의 메서드 나 속성에 어딘가에서 액세스하려고합니다. –

0

당신이 무엇을 요구하고 있는지 명확하지 않습니다.

string verb = resData.verb; 
Console.WriteLine(verb); 
+0

는'resData.verb'이 유효하지 않습니다. 컴파일하지 않을 것입니다. 죄송합니다. 잘못된 일을하고 있지만 수신 할 때이 값에 액세스 할 수 없습니다. – Maxsteel