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");
但是我不能这样做,因为它返回字符串
谢谢,铁托
您需要对它进行反序列化。http://json.codeplex.com/是我经常使用的序列化器。它非常灵活和快速。你可以这样称呼它:
CustomerOrderModel customerOrderModel =
json.Deserialize<CustomerOrderModel>(jObject.SelectToken("customerOrderHeader"));