我遇到了反序列化的问题,定义这个JSON结构对于获得一些帮助非常有用。我已经把它恢复到最后一个已知的工作位置,因为我刚刚离开这里。
我的JSON结构是:
[{
"name": "Name1",
"description": "Description of this process",
"Location": "ANY",
"SubItems": [{
"name": "sub1",
"required": true,
"description": "This is a short description"
}, {
"name": "sub2",
"required": true,
"description": "This is a short description"
}, {
"name": "sub3",
"required": true,
"description": "This is a short description"
}],
"outputs": [{
"name": "out1",
"required": false
}, {
"name": "exit code",
"required": false
}]
}, {
"name": "Name2",
"description": "This is a short description",
"Location": "ANY",
"SubItems": [{
"name": "sub1",
"required": false,
"description": "This is a short description"
}]
}]
这是我上次工作的C#Json定义。
public class JsonObject
{
[JsonProperty("name")]
public string ProcessName { get; set; }
[JsonProperty("description")]
public string ProcessDescription { get; set; }
[JsonProperty("Location")]
public string KnownLocation { get; set; }
}
我目前只是为了测试而捕获了几个定义。
这是我的反序列化对象
var Object = JsonConvert.DeserializeObject <List<JsonObject>>(txt);
foreach (JsonObject JsonObject in Object)
{
Console.WriteLine("Name: " + JsonObject.ProcessName);
Console.WriteLine();
Console.WriteLine("Description: " +JsonObject.ProcessDescription);
Console.WriteLine();
}
正如我所说,我可以在输出中至少获得前3个最顶级的JSON元素。当我开始尝试获取“SubItems”和“outputs”
时,问题就出现了我按照下面链接的帖子的结构并且非常努力地理解它,但是过了一段时间我意识到解决方案不适合这个问题。我只是有一个多维数组JSON对象。字面上有一个顶层和2个子层
我试图尝试做...
List<List<JsonObject>>Object = JsonConvert.DeserializeObject <List<List<JsonObject>>>(txt);
并尝试使用3组JSON定义,使用不同名称的2个相同列表。
并实现了分层的foreach循环,但后来我无法访问最顶级JSON的定义,也没有为“SubItems”的实际元素编写
我需要的是真正获得每个对象。
How to deserialize a json file with multidimensional array to convert it to object in c#
相关问题
答案 0 :(得分:2)
它不是一个多维数组。只是一个包含数组的数组对象。 所以你的模型可以如下
public class SubItem
{
public string Name { get; set; }
public bool Required { get; set; }
public string Description { get; set; }
}
public class Output
{
public string Name { get; set; }
public bool Required { get; set; }
}
public class JsonObject
{
public string Name { get; set; }
public string Description { get; set; }
public string Location { get; set; }
public List<SubItem> SubItems { get; set; }
public List<Output> Outputs { get; set; }
}
你可以反序列化为
var obj = JsonConvert.DeserializeObject<List<JsonObject>>(jsonstring);
PS:您可以使用JsonProperty
来装饰该模型