2011-07-22 4 views
0

私はASP.Net MVCとJSON.Net APIを使用しています。 CustomerOrderHeaderとCustomerOrderLinesコレクションの2つのオブジェクトを非直列化したいとします。 私はjsonString変数でJSONを持っている:JSON Json.NETで1つのJSONメッセージを使用する2つのオブジェクトの非直列化C#

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

を私はクラスがあります:私は何をしたいのか

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クラスを作るのが好きなどの 何かでしょう:CustomerOrderLineModelsのコレクションに同じ

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

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

しかし、それは返すので、私は、これを行うことはできません文字列。

おかげで、

ティト

答えて

0

あなたはそれをデシリアライズする必要があります。 http://json.codeplex.com/は、私が常に使用するシリアライザです。それは非常に柔軟で速いです。 あなたは次のように呼びます:

CustomerOrderModel customerOrderModel = 
    json.Deserialize<CustomerOrderModel>(jObject.SelectToken("customerOrderHeader")); 
関連する問題