Необходимо десериализовать вложенный массив json в массив на стороне сервера

#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 десериализуется полностью.