C# 无法反序列化当前JSON数组问题

C# 无法反序列化当前JSON数组问题,c#,asp.net,json,asp.net-mvc,C#,Asp.net,Json,Asp.net Mvc,我试图将一个来自web服务的JSON响应放入一个可以传递到视图并显示结果的对象中。我似乎在反序列化JSON时遇到了一些问题。这里是错误 无法将当前JSON数组(例如[1,2,3])反序列化为类型“Project.Models.Order”,因为该类型需要一个JSON对象(例如{“name”:“value”})才能正确反序列化。 要修复此错误,请将JSON更改为JSON对象(例如{“name”:“value”}),或将反序列化类型更改为数组或实现可从JSON数组反序列化的集合接口(例如IColle

我试图将一个来自web服务的JSON响应放入一个可以传递到视图并显示结果的对象中。我似乎在反序列化JSON时遇到了一些问题。这里是错误

无法将当前JSON数组(例如[1,2,3])反序列化为类型“Project.Models.Order”,因为该类型需要一个JSON对象(例如{“name”:“value”})才能正确反序列化。 要修复此错误,请将JSON更改为JSON对象(例如{“name”:“value”}),或将反序列化类型更改为数组或实现可从JSON数组反序列化的集合接口(例如ICollection、IList)类似列表的类型。还可以将JsonArrayAttribute添加到类型中,以强制它从JSON数组反序列化。 路径“”,第1行,位置1

我的控制器代码如下

string url = @"URL of webservice here";

var returnValue = new WebClient().DownloadString(url);

var obj = JsonConvert.DeserializeObject<Order>(returnValue);

return View(obj);
下面是返回的JSON

[{"ShipmentTrackingNUmbers":[{"sTrackingNumber":"Redacted"}],"dtDateShipped":"5/12/2017 12:00:00 AM","dSPRatedWeight":"41.0000","nMBTotalBoxes":"1","sShipToAddressLine2":"Redacted","sShipToCountry":"U.S.A.","sShipToZip":"Redacted","sShipToState":"Redacted","sShipToCity":"Redacted","sShipToAddressLine1":"Redacted","sShipToName":"Redacted","sServiceLevel":"GND","sInvoiceNumber":"","dtInvoiceDate":"","mInvoiceAmount":"","dtDateReceived":"5/8/2017 3:16:25 PM","sStudioCategory2":"","sStudioCategory1":"","sOrderSource":"Redacted","sCustomerComments":"Redacted","sCustomerOrderName":"Redacted","sWorkOrderNumber":"Redacted","sCustomerNumber":"Redacted"},{"ShipmentTrackingNUmbers":[{"sTrackingNumber":"Redacted"}],"dtDateShipped":"5/10/2016 12:00:00 AM","dSPRatedWeight":"3.0000","nMBTotalBoxes":"1","sShipToAddressLine2":"","sShipToCountry":"U.S.A.","sShipToZip":"Redacted","sShipToState":"Redacted","sShipToCity":"Redacted","sShipToAddressLine1":"Redacted","sShipToName":"Redacted","sServiceLevel":"GND","sInvoiceNumber":"","dtInvoiceDate":"","mInvoiceAmount":"","dtDateReceived":"5/2/2016 7:18:41 AM","sStudioCategory2":"","sStudioCategory1":"","sOrderSource":"Redacted","sCustomerComments":"Redacted","sCustomerOrderName":"Redacted","sWorkOrderNumber":"Redacted","sCustomerNumber":"Redacted"}]
编辑:添加订单型号代码

namespace Project.Models
{
public class Order
{
    public string ShipmentTrackingNUmbers
    {
        get;
        set;
    }
    public string dtDateShipped
    {
        get;
        set;
    }
    public string dSPRatedWeight
    {
        get;
        set;
    }
    public string nMBTotalBoxes
    {
        get;
        set;
    }
    public string sShipToAddressLine2
    {
        get;
        set;
    }
    public string sShipToCountry
    {
        get;
        set;
    }
    public string ShipToZip
    {
        get;
        set;
    }
    public string sShipToState
    {
        get;
        set;
    }
    public string sShipToCity
    {
        get;
        set;
    }
    public string sShipToAddressLine1
    {
        get;
        set;
    }
    public string sShipToName
    {
        get;
        set;
    }
    public string sServiceLevel
    {
        get;
        set;
    }
    public string sInvoiceNumber
    {
        get;
        set;
    }
    public string dtInvoiceDate
    {
        get;
        set;
    }
    public string mInvoiceAmount
    {
        get;
        set;
    }
    public string dtDateReceived
    {
        get;
        set;
    }
    public string sStudioCategory2
    {
        get;
        set;
    }
    public string sStudioCategory1
    {
        get;
        set;
    }
    public string sOrderSource
    {
        get;
        set;
    }
    public string sCustomerComments
    {
        get;
        set;
    }
    public string sCustomerOrderName
    {
        get;
        set;
    }
    public string sWorkOrderNumber
    {
        get;
        set;
    }
    public string sCustomerNumber
    {
        get;
        set;
    }
}
}
提前感谢您的帮助。
我已经尝试了各种方法使其格式正确,但无法使其工作。任何指导都会令人惊讶。

您的模型应该是这样的。请注意,
ShipmentTrackingNUmbers
是一个
列表

class Shipment
{
    public List<ShipmentTrackingNUmbers> ShipmentTrackingNUmbers { get; set; }
    public string dtDateShipped { get; set; }
    public string dSPRatedWeight { get; set; }
    public string nMBTotalBoxes { get; set; }
    public string sShipToAddressLine2 { get; set; }
}

public class ShipmentTrackingNUmbers
{
    public string sTrackingNumber { get; set; }
}

你的模型应该是这样的。请注意,
ShipmentTrackingNUmbers
是一个
列表

class Shipment
{
    public List<ShipmentTrackingNUmbers> ShipmentTrackingNUmbers { get; set; }
    public string dtDateShipped { get; set; }
    public string dSPRatedWeight { get; set; }
    public string nMBTotalBoxes { get; set; }
    public string sShipToAddressLine2 { get; set; }
}

public class ShipmentTrackingNUmbers
{
    public string sTrackingNumber { get; set; }
}

您的模型是什么样子的?订单对象是什么样子的?请为您的模型添加代码我想您可能需要使用JsonConvert.DeserializeObject(returnValue)您的模型是什么样子的?订单对象是什么样子的?请为您的模型添加代码
订单
我想您可能需要使用
JsonConvert.DeserializeObject(returnValue)
这是正确的答案。OP的型号不正确,需要修复。谢谢你,你是正确的。我的型号不正确,项目可以有多个跟踪编号。现在我需要弄清楚如何修改视图以反映这些更改。再次感谢你的帮助!这是正确的答案。OP的型号不正确,需要修复。谢谢你,你是正确的。我的型号不正确,项目可以有多个跟踪编号。现在我需要弄清楚如何修改视图以反映这些更改。再次感谢你的帮助!
List<Shipment> shipments = JsonConvert.DeserializeObject<List<Shipment>>(returnValue);