Десериализация SFDC REST сервисов JSON resopnse
Получение следующего ответа от SFDC REST Web Service (строка jsonResponse ниже):
{
"responseDataList": [{
"salesforceRecordId": "a00C000000L5DQRIA3",
"recordName": "Computer_Name_2",
"IsSuccess": true,
"errorMessage": null
}]
}
Попытка десериализации с помощью ServiceStack.JsonSerializer:
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string jsonResponse = new StreamReader(response.GetResponseStream()).ReadToEnd();
ResponseDataList list = JsonSerializer.DeserializeFromString<ResponseDataList>(jsonResponse);
ResponseDataList имеет следующую структуру:
public class ResponseData
{
public string salesforceRecordId { get; set; }
public string recordName { get; set; }
public bool IsSuccess { get; set; }
public string errorMessage { get; set; }
}
public class ResponseDataList
{
List<ResponseData> responseDataList { get; set; }
}
Однако после десериализации список ResponseDataList равен нулю. Что я делаю не так, как правильно десериализовать?
2 ответа
Решение
Обнародовав responseDataList, я смог правильно десериализоваться.
public class ResponseDataList
{
public List<ResponseData> responseDataList { get; set; }
}
Если вы открыты для использования Json.NET для десериализации вместо Service Stack, вы можете легко сделать это следующим образом без необходимости DataResponseList
учебный класс:
var client = new WebClient();
var json = client.DownloadString("url");
IList<ResponseData> data = JsonConvert.DeserializeObject<List<ResponseData>>(json);