문제

WP7 프로젝트를 위해 RestSharp를 시험해보고 있습니다.RestSharp를 사용하여 일부 XML을 역직렬화하는 데 문제가 있습니다.개체가 null입니다.관련 XML 중 일부는 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<api_response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <response_data>
        <employee_information>
          <employee>
            <employee_sf_name>David</employee_sf_name>
            <employee_first_name>Dave</employee_first_name>
            <employee_last_name>Jones</employee_last_name>
          </employee>
        </employee_information>
    </response_data>
</api_response>

내 요청은 다음과 같습니다.

public static void executeRequest(Action<string> callback, string method)
    {
        var client = new RestClient();
        var request = new RestRequest(Method.POST);
        client.BaseUrl = App.url + method;
        request.AddParameter("secret_key", Application.secret_key);
        request.AddParameter("email", Application.email);
        request.AddParameter("password", Application.password);

        client.ExecuteAsync<Employee>(request, response =>
        {
            callback(response.Content); //prints the response as output
            Debug.WriteLine("firstname " + response.Data.employee_first_name);
        });
    }

그리고 Employee 개체는 다음과 같습니다.

public class Employee
{
    public Employee() { }
    public int employee_id { get; set; }
    public String employee_first_name { get; set; }
    public String employee_last_name { get;  set; }

}

응답이 제대로 돌아왔으므로 별도의 함수에서 역직렬화를 시도했지만 성공하지 못했습니다.

public static void parse(string data)
    {
        Debug.WriteLine(data);
        XmlDeserializer xml = new XmlDeserializer();
        Employee employee = new Employee();
        employee = xml.Deserialize<Employee>(new RestResponse() { Content = data });

        Debug.WriteLine("last name " + employee.employee_last_name);
        Debug.WriteLine("firstname " + employee.employee_first_name);   

    }

누군가가 문제에 대해 밝힐 수 있다면 미리 감사드립니다.

도움이 되었습니까?

해결책

첫 번째 꺼짐, 닫는 태그는 닫는 태그가되어야합니다.내가 고정 한 후에는 동봉 클래스를 설정했습니다.

public class employee_information
{
    public Employee employee { get; set; }
}
.

그런 다음 원래 직원 클래스를 유지하십시오 :

public class Employee
{
    public Employee() { }
    public int employee_id { get; set; }
    public String employee_first_name { get; set; }
    public String employee_last_name { get; set; }

}
.

그 다음에 deserialize :

var empInfo = xml.Deserialize<employee_information>((new RestResponse() {Content = data}));
.

다른 팁

첨가 request.RootElement = "employee"; 기존 코드와 작동해야 합니다.트리 아래쪽에서 시작하지 않으려면 전체 계층 구조와 일치하는 클래스를 만들어야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top