2017-10-11 70 views
-2

我想有你的一些建議,對我們如何才能設計出這種複雜的實體,以便它可以很容易地使用JsonConvert.DeserializeObject如何設計實體deserialise JSON字符串到C#實體

反序列化

JSON字符串將看起來像:

{  
    "name": "ABC MANAGEMENT"   
    "statusId": {  
     "mnemo": "110"   
     "label": "Validated"  
    }  
    "tdMnemo": "TD177"  
    "productsTradedOnDesks": [  
     {  
     "secptdAssetClassId": 374  
     "secptdAssetClassName": "ABCD"  
     "secptdInstrumentId": 499  
     "secptdInstrumentName": "Lending and Borrowing"  
     "sectptdVlkMap": [  
      {  
      "secpVlkmVlkId": 25  
      "secpVlkmVlkLabel": "Lend and Borrow"  
      }  
     ]  
     }  
     {  
     "secptdAssetClassId": 383  
     "secptdAssetClassName": "FXH"  
     "secptdInstrumentId": 453  
     "secptdInstrumentName": "FWD and SWP"  
     "sectptdVlkMap": [  
      {  
      "secpVlkmVlkId": 33  
      "secpVlkmVlkLabel": "Risk"  
      }  
     ]  
     }  
     {  
     "secptdAssetClassId": 383  
     "secptdAssetClassName": "FXG"  
     "secptdInstrumentId": 407  
     "secptdInstrumentName": "NDF"  
     "sectptdVlkMap": [  
      {  
      "secpVlkmVlkId": 33  
      "secpVlkmVlkLabel": "Hedging"  
      }  
     ]  
     }  
     {  
     "secptdAssetClassId": 383  
     "secptdAssetClassName": "FXJ"  
     "secptdInstrumentId": 414  
     "secptdInstrumentName": "SPT"  
     "sectptdVlkMap": []  
     }  
    ]  
    } 
+2

不知道你有什麼問題嗎?看起來很簡單。你會有'公共類公司'和'公司'有一個'狀態'對象和'ProductTrade'對象的集合等... – 12seconds

+0

你可以去網站[json2csharp](http:// json2csharp .com /),這是爲此原因開發的(並且在後面使用Json.NET)。順便說一下......你的json數據中的屬性應該以**,**結尾。 –

回答

0

這裏是我的方法做C#模型反序列化JSON到

  • 所包含像{...}應該represe成員與類
  • 被包含像[ ... ]甲構件nted應該用List<T>,或其它IEnumberable
  • 被包含像"..."成員來表示,應爲原始值,諸如stringint
  • 你的Json應該只有一個根成員。它可以是一個列表或一個對象。
1

與Visual Studio,如果你的JSON格式是正確的,你可以在內存中拷貝JSON,點擊空CS文件,單擊編輯 - >粘貼JSON作爲類,你直接讓你的類。

這應該適合你。

Data here is starting class 
    - Holds a reference to StatusId class 
    - Holds a reference to ProductTraded array 

Every ProductTraded object 
    - Holds a reference to ProductMapDetail array 

您可以創建對象並分配值。然後,使用JSON.net序列化來檢查輸出。如果輸出匹配,它將被反序列化爲Data類。

public class Data 
{ 
    public string name { get; set; } 
    public StatusId statusId { get; set; } 
    public string tdMnemo { get; set; } 
    public ProductTraded[] productsTradedOnDesks { get; set; } 
} 

public class StatusId 
{ 
    public string mnemo { get; set; } 
    public string label { get; set; } 
} 

public class ProductTraded 
{ 
    public int secptdAssetClassId { get; set; } 
    public string secptdAssetClassName { get; set; } 
    public int secptdInstrumentId { get; set; } 
    public string secptdInstrumentName { get; set; } 
    public ProductMapDetail[] sectptdVlkMap { get; set; } 
} 

public class ProductMapDetail 
{ 
    public int secpVlkmVlkId { get; set; } 
    public string secpVlkmVlkLabel { get; set; } 
}