【问题标题】:Cannot deserialize the current JSON object for Multiple Objects无法为多个对象反序列化当前 JSON 对象
【发布时间】: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":""
            }
         ]
      }
   ]
}

【问题讨论】:

    标签: c# json


    【解决方案1】:

    您的 JSON 格式似乎不正确。
    Data 元素应该是一个数组而不是一个对象。

    以下应该做:

    {
       "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": ""
                    }
                ]
            }
        ]
    }
    

    如果 Data 元素不应该是一个数组,那么在这种情况下,您的 JSON 会包含额外的值,并且以下内容应该是您要查找的内容:

    {
       "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": ""
                    }
                ]
            }
    
    }
    

    【讨论】:

    • 我无法将 Json 更改为来自供应商 API 调用的它......?我已经将我的类更改为对象数组 [JsonProperty("Data")] public object[] Data { get;放; } 但恐怕没有欢乐,
    【解决方案2】:

    睡在上面...这类似于您的回答是马赫迪,谢谢, 我需要反序列化 Raw,然后通过反序列化的对象 foreach 将其添加到列表中,

      Rootobject test = JsonConvert.DeserializeObject<Rootobject>(result1);
                   foreach(Rootobject  items in test.Data)
                   {
                       POOrders.Add(items);
                   }
    

    【讨论】:

      【解决方案3】:

      您得到的错误是因为您试图将 JSON 字符串反序列化为 Rootobjects 列表而不是 Rootobject 本身。

      还可以通过复制 JSON 字符串(完整的字符串)并在 Visual Studio 中通过 Edit > Paste Special > Paste JSON As Classes 将其粘贴来生成您的类。

      这是根对象:

      public class Rootobject
      {
          public int TotalItems { get; set; }
          public Paginginfo PagingInfo { get; set; }
          public int TotalPages { get; set; }
          public Datum[] Data { get; set; }
      }
      
      public class Paginginfo
      {
          public int PageSize { get; set; }
          public int Page { get; set; }
      }
      
      public class Datum
      {
          public int PurchaseOrderID { get; set; }
          public string PurchaseOrderGuid { get; set; }
          public User User { get; set; }
          public string PurchaseOrderReference { get; set; }
          public DateTime DateRaised { get; set; }
          public Supplier Supplier { get; set; }
          public Warehouse Warehouse { get; set; }
          public DateTime DateDue { get; set; }
          public string PurchaseOrderStatus { get; set; }
          public float DeliveryCost { get; set; }
          public float Subtotal { get; set; }
          public float TotalVat { get; set; }
          public float Total { get; set; }
          public Currency Currency { get; set; }
          public DateTime DateSent { get; set; }
          public Purchaseorderline[] PurchaseOrderLines { get; set; }
      }
      
      public class User
      {
          public int UserID { get; set; }
          public string UserName { get; set; }
      }
      
      public class Supplier
      {
          public int SupplierID { get; set; }
          public string Name { get; set; }
      }
      
      public class Warehouse
      {
          public string WarehouseName { get; set; }
          public string WarehouseGuid { get; set; }
          public int WarehouseID { get; set; }
      }
      
      public class Currency
      {
          public int CurrencyID { get; set; }
          public string CurrencyCode { get; set; }
          public string CurrencyName { get; set; }
      }
      
      public class Purchaseorderline
      {
          public int PurchaseOrderLineID { get; set; }
          public string ProductSKU { get; set; }
          public int QtyOrdered { get; set; }
          public int QtyReceived { get; set; }
          public string PurchaseOrderDetailsStatus { get; set; }
          public float SinglePrice { get; set; }
          public float LineVat { get; set; }
          public float LineTotal { get; set; }
          public int DeliveryStatusID { get; set; }
          public float QtyWrittenOff { get; set; }
          public int CartonQty { get; set; }
          public int AddedByUserID { get; set; }
          public int TotalUnitsOrdered { get; set; }
          public int TotalUnitsReceived { get; set; }
          public int TotalUnitsWrittenOff { get; set; }
          public string LineNotes { get; set; }
      }
      

      但如果您的 JSON 字符串包含一个 Rootobjects 数组,则如下所示:

      [{RawData1},{RawData2},{RawData3}]
      

      那么你可以如下反序列化它:

      var test = JsonConvert.DeserializeObject<List<Rootobject>>(json);
      

      【讨论】:

      • 我收集到,因为我可以包含单个 RootObject 的列表,当 Json 中有多个相同对象时,我很难让它工作。这就是错误出现的地方,我以前在示例 API(Telerik soap Test API 模拟器)上做过,效果很好..但我真的很难将 Json 中的数据放入列表中......?
      • 我刚刚用数组测试了我的代码。它工作正常。你是如何生成你的类的?
      • 我只是将原始数据复制到剪贴板,创建了一个类,粘贴特殊并将 Json 粘贴为类...然后将 JsonProperty 放在每个类上...
      • 我刚刚重新创建了这个类,还是一样。你是如何测试你的数组的?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 2021-12-03
      • 1970-01-01
      • 2017-03-06
      • 2017-10-28
      相关资源
      最近更新 更多