2014-03-25 82 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。