2016-12-29 4 views
1

Я новичок в C# и RestSharp.Получение нулевых значений при десериализации списка с помощью RestSharp

Я пишу небольшую программу, чтобы получить список записей через REST. Я смог получить одну запись. Теперь мне нужно получить список записей, и здесь у меня проблема.

Ответ я получаю с помощью SoapUI выглядит следующим образом:

{ 
    "@count": 2, 
    "@start": 1, 
    "@totalcount": 2, 
    "Messages": [], 
    "ResourceName": "email", 
    "ReturnCode": 0, 
    "content": [ 
     {"email": {"evsysseq": "0000000000000262"}}, 
     {"email": {"evsysseq": "0000000000000263"}} 
    ] 
} 

Мой код выглядит следующим образом:

class EmailID 
{ 
    public string Evsysseq { get; set; } 
} 

var client = new RestClient("xxxxx"); 
client.Authenticator = new HttpBasicAuthenticator("xxx", "xxx"); 
string queryParm = HttpUtility.UrlEncode("evsysseq>\"0000000000000261\""); 

var request = new RestRequest("xxxx?query="+ queryParm, Method.GET); 
request.RootElement = "content"; 
var queryResult = client.Execute<List<EmailID>>(request).Data; 

Запуск это не приводит к ошибкам, и я могу видеть на queryResult объекта что он содержит две записи. Но, Evsysseq имеет значение null для обоих, и это моя проблема. Я не уверен, что настроить, чтобы все исправить.

ответ

1

Вы получаете нулевые значения, потому что десанциализация JSON не соответствует структуре класса, которую вы десериализируете. Вы сообщаете RestSharp, чтобы десериализовать массив content в List<EmailID>, но JSON действительно представляет список объектов, которые содержатEmailID объектов. И поэтому вам нужен еще один класс:

class EmailObj 
{ 
    public EmailID Email { get; set; } 
} 

Тогда десериализации, как это, и вы должны получить данные:

var queryResult = client.Execute<List<EmailObj>>(request).Data; 

Если вы хотите, вы можете использовать LINQ, чтобы получить List<EmailID>, что вы изначально хотели как это:

var emailIds = queryResult.Select(eo => eo.Email).ToList(); 

НТН

+0

Спасибо Брайану. Работала отлично. Очень признателен. – Tommy

+0

Рад, что я мог помочь. Счастливых праздников! –