2017-10-11 71 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; } 
}