2014-03-25 83 views
0

我必須根據我收到的json模板設計一個類。我被困在JSON的這一部分:從json模板設計c#類

events: { 
    "door": [ 
     5, 
     { 
      valueone: 27, 
      valuetwo: "something" 
     } 
    ], 
    "window": [ 
     2, 
     { 
      valueone: 13, 
      valuetwo: "something" 
     } 
    ] 
} 

我能想出的最好的是這個屬性的根對象:

public Dictionary<string, EventData> Events { get; set; } 

,事件的定義是這樣的:

public class EventData 
{ 
    public int valueone { get; set; } 
    public string valuetwo { get; set; } 
} 

這讓我對例如以下的輸出:

Events: { 
    door: { 
     valueone: 27, 
     valuetwo: "something" 
    } 
} 

但我不知道如何設計類以獲取輸出中json示例(5和2)中的數字。今天我已經嘗試過谷歌很長一段時間了,但我不太確定要搜索什麼。

+3

嘗試http://json2csharp.com/,粘貼您的有效JSON,您可以獲取您的課堂模板 – Habib

回答

0

下面是代碼的輪廓,將適合:

public class Event 
{ 
    public List<Elements> door { get; set; } 
    public List<Elements> window { get; set; } 
} 

public sealed class Elements 
{ 
    public int Id {get; set;} 
    public IDictionary<string, string> Values { get; set;} 
} 

你可以建立與C#你的對象,然後使用JSON.Net使用它們序列化到JSON有對應:

Newtonsoft.Json.JsonConvert.SerializeObject(YOUR-OBJECT-HERE) 
0

根據您的需要,您不一定必須定義捕獲json的類型,如下所示:

對於解析,您可以使用dynamic將json捕獲爲p由一些json libararies。

序列化JSON,你可以定義匿名對象,像這樣

Json.Stringify(new { 
    events = new { 
     door = new[] { 
      5, 
      new { ... } 
     } 
    } 
}); 

如果需要定義明確的類型(因爲你想在你的C#程序模型),你可能想獲得更清晰您即將建模的域。您可以使用不同的C#結構來鏡像相同的JSON,因此這裏真正重要的是業務/需求是做什麼或看起來如何。

正如@Habib在他的評論中指出的那樣,您可以使用json2csharp.com爲您提供一個提示(直到現在我還不知道該服務 - 看起來有趣!),但json2csharp.com將無法回答這些問題。

注:「JSON」,因爲它代表你的問題是無效的JSON。