【发布时间】:2017-01-18 00:33:35
【问题描述】:
我在反序列化和定义这个 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 元素。当我开始尝试获取“子项”和“输出”时,问题就开始了
我遵循以下链接帖子的结构并努力理解它,但过了一段时间我意识到解决方案不适用于这个问题。我只是有一个多维数组 JSON 对象。从字面上看,有一个顶层和两个子层
我试着去做……
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#
相关问题
【问题讨论】:
-
看起来你的数组不是多维的,只是你的 JsonObject 里面有一个数组。
-
那个 JSON 无效。上传到jsonlint.com,你会看到各种错误。你能edit你的问题包含reproduces问题的JSON吗?
-
Raderick,即多维数组的定义。
-
dbc- 我从一个巨大的 JSON 列表中分块出来。我不创建 JSON,也无法控制或编辑它,所以请假设 JSON 格式正确。我对 JSON 没有问题我在解析 C# 中的 JSON 数组对象时遇到问题,所以这更像是一个 C# 编码问题
-
多维数组:
[[0,1],[2,3],[4,5]]。您的代码:[{prop:[0,1]},{prop:[2,3]}]。它不是多维数组。
标签: c# json multidimensional-array