#asp.net-mvc #json #json.net
#asp.net-mvc #json #json.net
Вопрос:
У меня есть массив, вложенный в объект в строке JSON, который мне нужно десериализовать на сервере:
var orderStatus = {"auth": "xxxx", "resourceType": "order.status", "idSet": "2980", "lifecycleEvent": "modified", "objects": { "orders": [ { "id": "2980", "statusId": "6" } ] }
Я использую плагин Роберта Коритника следующим образом:
$.ajax({url: "receiveJson", type: "POST", data: $.toDictionary(orderStatus) });
Мой файл класса .net:
public class orders
{
public string Id { get; set; }
public string statusId { get; set; }
}
public class objects
{
public orders orders { get; set; }
}
public class OrderStatus
{
public string clientName { get; set; }
public string source { get; set; }
public string auth { get; set; }
public string resourceType { get; set; }
public string idSet { get; set; }
public string lifecycleEvent { get; set; }
public objects objects { get; set; }
}
мой код контроллера:
public JsonResult receiveJson(OrderStatus orderStatus)
Итак, объектом orders является массив. Это работает до создания заказов как объекта, но идентификатор и идентификатор состояния в объекте orders равны нулю.
Я не могу контролировать JSON, который я получу, он должен быть в этом формате.
Я новичок в JSON и .NET MVC. Не знаю, как указать объект заказов на стороне сервера в виде массива.
Ответ №1:
Исправлено, слегка изменив мои классы на стороне сервера:
public class order
{
public string Id { get; set; }
public string statusId { get; set; }
}
public class objects
{
public List<order> orders { get; set; }
}
public class OrderStatus
{
public string clientName { get; set; }
public string source { get; set; }
public string auth { get; set; }
public string resourceType { get; set; }
public string idSet { get; set; }
public string lifecycleEvent { get; set; }
public objects objects { get; set; }
}
Итак, класс «orders» был изменен на «order». свойство «objects.orders» изменено на список.
Теперь jsondata десериализуется полностью.