开发者

JSON Deserialization of two objects using one JSON message with Json.NET C#

开发者 https://www.devze.com 2023-03-22 09:21 出处:网络
I am using ASP.Net MVC and JSON.Net API. I would like to deserialize two objects, let\'s say: CustomerOrderHeader and a CustomerOrderLines collection.

I am using ASP.Net MVC and JSON.Net API. I would like to deserialize two objects, let's say: CustomerOrderHeader and a CustomerOrderLines collection. I have the JSON in the jsonString variable:

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

And I have the 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; }

       ...
}

and

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; se开发者_StackOverflowt; }
        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; }


    }

What I just want to do is get the JSON and pass to this classes:

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

Now I would like to make this jToken PassTo CustomerOrderModel class, Something like:

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

the same to the collection of CustomerOrderLineModels:

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

But I can't do this, because it returns string.

thanks,

Tito


You need to deserialize it. http://json.codeplex.com/ is the serializer I always use. It is very flexible and fast. You call it something like this:

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

精彩评论

暂无评论...
验证码 换一张
取 消