【发布时间】:2017-03-14 14:51:27
【问题描述】:
但是,当我检索单个数据条目时,我的数据可以很好地反序列化,
无法反序列化当前 JSON 对象(例如 {"name":"value"}) 进入类型'System.Collections.Generic.List`1 [Purchaseorderline]' 因为该类型需要一个 JSON 数组(例如 [1,2,3])来反序列化 正确。
这是为了检索 Orders 和 OrderItems,我可以做一个订单(通过请求一个订单号)但是当我收到所有订单时,它会出错, 我已经执行了到 Json 对象的标准转换,以确保我的类是正确的,并且看不到我应该将什么作为数组应用到我的类中,以简单地将其放入 RootObject 类型的列表中。
这是我的代码:
{
// ... Read the string.
var result1 = await content.ReadAsStringAsync();
List<Rootobject> POOrders = new List<Rootobject>();
Rootobject test = JsonConvert.DeserializeObject<Rootobject>(result1);
POOrders.Add(test);
POOrders = JsonConvert.DeserializeObject<List<Rootobject>>(result1);
}
这里是类:
using Newtonsoft.Json;
using System;
using SFOrders;
public class Rootobject:Purchaseorderline
{
[JsonProperty("PurchaseOrderID")]
public string PurchaseOrderID { get; set; }
[JsonProperty("PurchaseOrderGuid")]
public string PurchaseOrderGuid { get; set; }
[JsonProperty("User")]
public User User { get; set; }
public string PurchaseOrderReference { get; set; }
[JsonProperty("DateRaised")]
public DateTime DateRaised { get; set; }
[JsonProperty("Supplier")]
public Supplier Supplier { get; set; }
[JsonProperty("Warehouse")]
public Warehouse Warehouse { get; set; }
[JsonProperty("DateDue")]
public DateTime DateDue { get; set; }
[JsonProperty("PurchaseOrderStatus")]
public string PurchaseOrderStatus { get; set; }
[JsonProperty("DeliveryCost")]
public float DeliveryCost { get; set; }
[JsonProperty("Subtotal")]
public float Subtotal { get; set; }
[JsonProperty("TotalVat")]
public float TotalVat { get; set; }
[JsonProperty("Total")]
public float Total { get; set; }
[JsonProperty("Currency")]
public Currency Currency { get; set; }
[JsonProperty("DateSent")]
public DateTime DateSent { get; set; }
[JsonProperty("PurchaseOrderLines")]
public Purchaseorderline[] PurchaseOrderLines { get; set; }
}
public class User
{
[JsonProperty("UserID")]
public int UserID { get; set; }
[JsonProperty("UserName")]
public string UserName { get; set; }
}
public class Supplier
{
[JsonProperty("SupplierID")]
public int SupplierID { get; set; }
[JsonProperty("Name")]
public string Name { get; set; }
}
public class Warehouse
{
[JsonProperty("WarehouseName")]
public string WarehouseName { get; set; }
[JsonProperty("WarehouseGuid")]
public string WarehouseGuid { get; set; }
[JsonProperty("WarehouseID")]
public int WarehouseID { get; set; }
}
public class Currency
{
[JsonProperty("CurrencyID")]
public int CurrencyID { get; set; }
[JsonProperty("CurrencyCode")]
public string CurrencyCode { get; set; }
[JsonProperty("CurrencyName")]
public string CurrencyName { get; set; }
}
public class Purchaseorderline
{
[JsonProperty("PurchaseOrderLineID")]
public int PurchaseOrderLineID { get; set; }
[JsonProperty("ProductSKU")]
public string ProductSKU { get; set; }
[JsonProperty("QtyOrdered")]
public int QtyOrdered { get; set; }
[JsonProperty("QtyReceived")]
public int QtyReceived { get; set; }
[JsonProperty("PurchaseOrderDetailStatus")]
public string PurchaseOrderDetailsStatus { get; set; }
[JsonProperty("SinglePrice")]
public float SinglePrice { get; set; }
[JsonProperty("LineVat")]
public float LineVat { get; set; }
[JsonProperty("LineTotal")]
public float LineTotal { get; set; }
[JsonProperty("DeliveryStatusID")]
public int DeliveryStatusID { get; set; }
[JsonProperty("QtyWrittenOff")]
public float QtyWrittenOff { get; set; }
[JsonProperty("CartonQty")]
public int CartonQty { get; set; }
[JsonProperty("AddedByUserID")]
public int AddedByUserID { get; set; }
[JsonProperty("TotalUnitsOrdered")]
public int TotalUnitsOrdered { get; set; }
[JsonProperty("TotalUnitsReceived")]
public int TotalUnitsReceived { get; set; }
[JsonProperty("TotalUnitsWrittenOff")]
public int TotalUnitsWrittenOff { get; set; }
[JsonProperty("LineNotes")]
public string LineNotes { get; set; }
[JsonProperty("TotalItems")]
public int TotalItems { get; set; }
[JsonProperty("PagingInfo")]
public object PagingInfo { get; set; }
[JsonProperty("TotalPages")]
public int TotalPages { get; set; }
[JsonProperty("Data")]
public SFOrders.SFOrderData.Datum[] Data { get; set; }
}
这是原始数据:
{
"TotalItems":2,
"PagingInfo":{
"PageSize":100,
"Page":1
},
"TotalPages":1,
"Data":[
{
"PurchaseOrderID":21179,
"PurchaseOrderGuid":"89bb1056-4d26-42a2-bf9c-25962637b42e",
"User":{
"UserID":10169,
"UserName":"Viv Williams"
},
"PurchaseOrderReference":"1-test-1",
"DateRaised":"2017-03-03T00:00:00",
"Supplier":{
"SupplierID":1307,
"Name":"99A Avery Warehouse"
},
"Warehouse":{
"WarehouseName":"Charlies Direct",
"WarehouseGuid":"00000000-0000-0000-0000-000000000000",
"WarehouseID":122
},
"DateDue":"2017-03-04T00:00:00",
"PurchaseOrderStatus":"SentToSupplier",
"DeliveryCost":0.0000,
"Subtotal":0.0000,
"TotalVat":0.0000,
"Total":0.0000,
"Currency":{
"CurrencyID":4,
"CurrencyCode":"GBP",
"CurrencyName":"British Pound"
},
"DateSent":"2017-03-03T12:13:59.05",
"PurchaseOrderLines":[
{
"PurchaseOrderLineID":184694,
"ProductSKU":"065233",
"QtyOrdered":3,
"QtyReceived":0,
"PurchaseOrderDetailsStatus":"AwaitingProduct",
"SinglePrice":0.0000,
"LineVat":0.0000,
"LineTotal":0.0000,
"DeliveryStatusID":1,
"QtyWrittenOff":0.0,
"CartonQty":1,
"AddedByUserID":10169,
"TotalUnitsOrdered":3,
"TotalUnitsReceived":0,
"TotalUnitsWrittenOff":0,
"LineNotes":""
},
{
"PurchaseOrderLineID":184695,
"ProductSKU":"039586",
"QtyOrdered":10,
"QtyReceived":0,
"PurchaseOrderDetailsStatus":"AwaitingProduct",
"SinglePrice":0.0000,
"LineVat":0.0000,
"LineTotal":0.0000,
"DeliveryStatusID":1,
"QtyWrittenOff":0.0,
"CartonQty":1,
"AddedByUserID":10169,
"TotalUnitsOrdered":10,
"TotalUnitsReceived":0,
"TotalUnitsWrittenOff":0,
"LineNotes":""
},
{
"PurchaseOrderLineID":184696,
"ProductSKU":"009493",
"QtyOrdered":2,
"QtyReceived":0,
"PurchaseOrderDetailsStatus":"AwaitingProduct",
"SinglePrice":0.0000,
"LineVat":0.0000,
"LineTotal":0.0000,
"DeliveryStatusID":1,
"QtyWrittenOff":0.0,
"CartonQty":1,
"AddedByUserID":10169,
"TotalUnitsOrdered":2,
"TotalUnitsReceived":0,
"TotalUnitsWrittenOff":0,
"LineNotes":""
},
{
"PurchaseOrderLineID":184697,
"ProductSKU":"002836",
"QtyOrdered":5,
"QtyReceived":0,
"PurchaseOrderDetailsStatus":"AwaitingProduct",
"SinglePrice":0.0000,
"LineVat":0.0000,
"LineTotal":0.0000,
"DeliveryStatusID":1,
"QtyWrittenOff":0.0,
"CartonQty":1,
"AddedByUserID":10169,
"TotalUnitsOrdered":5,
"TotalUnitsReceived":0,
"TotalUnitsWrittenOff":0,
"LineNotes":""
}
]
},
{
"PurchaseOrderID":21180,
"PurchaseOrderGuid":"854c1c5a-f63b-490e-99dc-119ed298988a",
"User":{
"UserID":10169,
"UserName":"Viv Williams"
},
"PurchaseOrderReference":"2 add Tues",
"DateRaised":"2017-03-03T00:00:00",
"Supplier":{
"SupplierID":1298,
"Name":"99D Dyffryn Warehouse"
},
"Warehouse":{
"WarehouseName":"Charlies Direct",
"WarehouseGuid":"00000000-0000-0000-0000-000000000000",
"WarehouseID":122
},
"DateDue":"2017-03-04T00:00:00",
"PurchaseOrderStatus":"SentToSupplier",
"DeliveryCost":0.0000,
"Subtotal":0.0000,
"TotalVat":0.0000,
"Total":0.0000,
"Currency":{
"CurrencyID":4,
"CurrencyCode":"GBP",
"CurrencyName":"British Pound"
},
"DateSent":"2017-03-03T12:13:48.19",
"PurchaseOrderLines":[
{
"PurchaseOrderLineID":184698,
"ProductSKU":"003010",
"QtyOrdered":5,
"QtyReceived":0,
"PurchaseOrderDetailsStatus":"AwaitingProduct",
"SinglePrice":0.0000,
"LineVat":0.0000,
"LineTotal":0.0000,
"DeliveryStatusID":1,
"QtyWrittenOff":0.0,
"CartonQty":1,
"AddedByUserID":10169,
"TotalUnitsOrdered":5,
"TotalUnitsReceived":0,
"TotalUnitsWrittenOff":0,
"LineNotes":""
},
{
"PurchaseOrderLineID":184699,
"ProductSKU":"094508",
"QtyOrdered":12,
"QtyReceived":0,
"PurchaseOrderDetailsStatus":"AwaitingProduct",
"SinglePrice":0.0000,
"LineVat":0.0000,
"LineTotal":0.0000,
"DeliveryStatusID":1,
"QtyWrittenOff":0.0,
"CartonQty":1,
"AddedByUserID":10169,
"TotalUnitsOrdered":12,
"TotalUnitsReceived":0,
"TotalUnitsWrittenOff":0,
"LineNotes":""
},
{
"PurchaseOrderLineID":184700,
"ProductSKU":"003820",
"QtyOrdered":20,
"QtyReceived":0,
"PurchaseOrderDetailsStatus":"AwaitingProduct",
"SinglePrice":0.0000,
"LineVat":0.0000,
"LineTotal":0.0000,
"DeliveryStatusID":1,
"QtyWrittenOff":0.0,
"CartonQty":1,
"AddedByUserID":10169,
"TotalUnitsOrdered":20,
"TotalUnitsReceived":0,
"TotalUnitsWrittenOff":0,
"LineNotes":""
},
{
"PurchaseOrderLineID":184701,
"ProductSKU":"003823",
"QtyOrdered":4,
"QtyReceived":0,
"PurchaseOrderDetailsStatus":"AwaitingProduct",
"SinglePrice":0.0000,
"LineVat":0.0000,
"LineTotal":0.0000,
"DeliveryStatusID":1,
"QtyWrittenOff":0.0,
"CartonQty":1,
"AddedByUserID":10169,
"TotalUnitsOrdered":4,
"TotalUnitsReceived":0,
"TotalUnitsWrittenOff":0,
"LineNotes":""
}
]
}
]
}
【问题讨论】: