JSON使用一个JSON消息和JSON对两个对象进行反序列化.净c#

本文关键字:JSON 对象 两个 反序列化 一个 消息 | 更新日期: 2023-09-27 18:03:01

我使用的是ASP。asp.net MVC和JSON。净API。我想反序列化两个对象,比方说:CustomerOrderHeader和CustomerOrderLines集合。JSON在jsonString变量中:

 {
    "customerOrderHeader": {
        "OrderNumber": "",
        "CustomerName": "",
        "Reference": "",
        "ShippingDate": "",
        "CurrencyId": "0",
        "LanguageId": "0",
        "DaLine1": "",
        "DaLine2": "",
        "DaCity": "",
        "DaPostalCode": "",
        "DaState": "",
        "DaCountry": "",
        "BaLine1": "",
        "BaLine2": "",
        "BaCity": "",
        "BaPostalCode": "",
        "BaState": "",
        "BaCountry": "",
        "Notes": ""
    },
    "customerOderLinesModel": [
        {
            "Num": "10",
            "PartNumber": "Inventory1",
            "Description": "aasss",
            "OrderedQuantity": "0",
            "UoM": "cm",
            "SalesPrice": "123.0000",
            "Amount": "0.0000",
            "LineStatus": "Draft",
            "ConfirmedShippingDate": "",
            "ReservedQuantity": "0",
            "DeliveredQuantity": "0",
            "RemainingQuantity": "0"
        }
    ]
}

我有Classes:

CustomerOrderModel {
        public string BillingAddress
        { get; set; }
        public string ShippingAddress
        { get; set; }
        [DisplayName("Customer name*:")]
        [Required]
        public string CustomerName
        { get; set; }
        [DisplayName("Order Number :")]
        public long? OrderNumber
        { get; set; }
        [DisplayName("Order Status :")]
        public int OrderStatus
        { get; set; }
        public string OrderStatusName 
        { get; set; }
        [DisplayName("Shipping Date :")]
        public DateTime? ShippingDate
        { get; set; }
        public bool IsDefaultda
        { get; set; }  
        [DisplayName("Total Amount :")]
        public decimal TotalAmount
        { get; set; }
        [DisplayName("Address Line 1 :")]
        public string DaLine1
        { get; set; }
        [DisplayName("Address Line 2 :")]
        public string DaLine2
        { get; set; }
        [DisplayName("City :")]
        public string DaCity
        { get; set; }
        [DisplayName("Postal Code :")]
        public string DaPostalCode
        { get; set; }
        [DisplayName("State :")]
        public string DaState
        { get; set; }
        [DisplayName("Country :")]
        public string DaCountry
        { get; set; }
        [DisplayName("Address Line 1 :")]
        public string BaLine1
        { get; set; }
        [DisplayName("Address Line 2 :")]
        public string BaLine2
        { get; set; }
        [DisplayName("City :")]
        public string BaCity
        { get; set; }
        [DisplayName("Postal Code :")]
        public string BaPostalCode
        { get; set; }
       ...
}

public class CustomerOrderLineModel
    {
        public CustomerOrderLineModel()
        {
        }
        public String OrderNumber { get; set; }
        public String Num { get; set; }
        public String PartNumber { get; set; }
        public String Description { get; set; }
        public String OrderedQuantity { get; set; }
        public String UoM { get; set; }
        public String SalesPrice { get; set; }
        public String Amount { get; set; }
        public String LineStatus { get; set; }
        public DateTime? ConfirmedShippingDate { get; set; }
        public String ReservedQuantity { get; set; }
        public String DeliveredQuantity { get; set; }
        public String RemainingQuantity { get; set; }

    }

我要做的就是获取JSON并传递给这个类:

  JObject jObject = JObject.Parse(jsonString);
  JToken jToken =  jObject.SelectToken("customerOrderHeader");

现在我想让这个jToken PassTo CustomerOrderModel类,比如:

 CustomerOrderModel customerOrderModel = (CustomerOrderModel) jObject.SelectToken("customerOrderHeader");

与CustomerOrderLineModels的集合相同:

List<CustomerOrderLineModel> customerOrderLines = (List<CustomerOrderLineModel>) jObject.SelectToken("customerOderLinesModel");

但是我不能这样做,因为它返回字符串

谢谢,铁托

JSON使用一个JSON消息和JSON对两个对象进行反序列化.净c#

您需要对它进行反序列化。http://json.codeplex.com/是我经常使用的序列化器。它非常灵活和快速。你可以这样称呼它:

CustomerOrderModel customerOrderModel =
  json.Deserialize<CustomerOrderModel>(jObject.SelectToken("customerOrderHeader"));