Поскольку мой последний вопрос был отмечен как дубликат, и я не нашел ответа в рекомендуемой ссылке, я снова задаю свой вопрос.Список, назначенный Json deserialize, равен null
Я хочу десериализовать некоторые данные JSON и передать его для просмотра в моем приложении ASP.NET MVC 5.
Моя модель:
public class OrderModel
{
public string Seat { get; set; }
public string objectId { get; set; }
public DateTime? createdAt { get; set; }
}
Я прочитал, что для десериализации данных JSON к списку объектов я должен сделать класс «корень», который находится здесь:
public class OrderRootModel
{
public List<OrderModel> OrderList { get; set; }
}
Вот метод который получает данные JSON в классе ApiModel и присваивает список. Этот метод, вероятно, является проблемой, так как она возвращается нуль:
//ApiModel class
public OrderRootModel GetOrderData()
{
string url = "https://api.parse.com/1/classes/Orders";
OrderRootModel model = new OrderRootModel();
model = JsonConvert.DeserializeObject<OrderRootModel>(getParseIdData(url));
return model;
}
Вот метод, который получает JSON строку:
public string getParseIdData(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add("X-Parse-Application-Id", id);
request.Headers.Add("X-Parse-REST-API-KEY", key);
try
{
WebResponse response = request.GetResponse();
using (Stream responseStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
return reader.ReadToEnd();
}
}
catch (WebException ex)
{
WebResponse errorResponse = ex.Response;
using (Stream responseStream = errorResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
String errorText = reader.ReadToEnd();
Console.WriteLine(errorText);
}
throw;
}
}
Вот getParseIdData() Ответ:
{"results":[{"Seat":"5","createdAt":"2015-11-29T18:50:15.320Z","objectId":"BsDSolYPsT","updatedAt":"2015-11-29T19:40:55.020Z"},{"Seat":"6","createdAt":"2015-12-02T22:31:36.892Z","objectId":"kQJ0R5TUvw","updatedAt":"2015-12-02T22:31:36.892Z"},{"Seat":"7","createdAt":"2015-12-02T22:31:40.261Z","objectId":"sVtdj3aipb","updatedAt":"2015-12-02T22:31:40.261Z"},{"Seat":"8","createdAt":"2015-12-02T22:31:43.082Z","objectId":"7oH2ySrDFH","updatedAt":"2015-12-02T22:31:43.082Z"}]}
Мой контроллер:
public ActionResult Index()
{
ApiModel model = new ApiModel();
return View(model.GetOrderData()) ;
}
Так что, наверное, я ошибся где-то в методе GetOrderData(), так как он возвращает null. Можете ли вы помочь мне решить эту проблему?
Она не должна называться 'OrderList', он должен быть назван' results'. В вашем классе 'OrderModel' также отсутствует поле" updatedAt'. –
Теперь он работает. Священная моля, которая была глупой ошибкой. Спасибо! – Kesto
Возможный дубликат [MVC5 JSON list NullReference exception] (http://stackoverflow.com/questions/34072703/mvc5-json-list-nullreference-exception) – Ross