我必须根据收到的json模板设计一个类。我被困在json的这一部分:
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)中的数字。我今天试图谷歌这个很长一段时间,但我不太清楚要搜索什么。
答案 0 :(得分: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)
答案 1 :(得分:0)
根据您的需要,您不一定要像这样定义捕获json的类型:
对于解析,您可以使用dynamic
来捕获json,这是由一些json libararies解析的。
为了序列化json,你可以定义像这样的匿名对象
Json.Stringify(new {
events = new {
door = new[] {
5,
new { ... }
}
}
});
如果您 需要定义显式类型(因为您需要在c#程序中使用模型),您可能希望更清楚地了解您要建模的域。您可以使用不同的C#结构镜像相同的JSON,因此这里真正重要的是业务/需求的作用或外观。
正如@Habib在评论中指出的那样,你可以使用json2csharp.com
给你一个提示(我直到现在才知道这项服务 - 看起来很有趣!),但是json2csharp.com将无法回答这些问题。的问题。
注意:你问题中的“json”是无效的JSON。