C# 无法反序列化当前JSON数组问题
我试图将一个来自web服务的JSON响应放入一个可以传递到视图并显示结果的对象中。我似乎在反序列化JSON时遇到了一些问题。这里是错误 无法将当前JSON数组(例如[1,2,3])反序列化为类型“Project.Models.Order”,因为该类型需要一个JSON对象(例如{“name”:“value”})才能正确反序列化。 要修复此错误,请将JSON更改为JSON对象(例如{“name”:“value”}),或将反序列化类型更改为数组或实现可从JSON数组反序列化的集合接口(例如ICollection、IList)类似列表的类型。还可以将JsonArrayAttribute添加到类型中,以强制它从JSON数组反序列化。 路径“”,第1行,位置1 我的控制器代码如下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
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);