我正在尝试找出一种反序列化 Json 类型对象的方法:
{
"0": { "course": { name: "<cource name", .... } },
"1": { "course": { name: "<cource name", .... } },
"success": true
}
进入
List<Course>
在哪里
public class Course
{
public string Name { get; set; }
}
问题是它不是一个“命名”数组,它用索引代替了属性名。这个数组是动态的,它包含许多元素,即“0”、“1”、“2”等。有没有一种简单的方法可以通过 Json.NET 反序列化它。我显然可以将它反序列化为动态对象,然后一个一个地创建一个 for 循环和查找索引,但我认为 Json.Net 可能对此有更优雅的东西。
最佳答案
您可以使用 Json.Net 的 Linq-to-Json API (JObjects) 来解析 JSON 并将其放入您想要的结构中。例如:
string json = @"
{
""0"": { ""course"": { name: ""Foo"" } },
""1"": { ""course"": { name: ""Bar"" } },
""success"": true
}";
JObject jo = JObject.Parse(json);
List<Course> courses = jo.Properties()
.Where(p => p.Name != "success")
.Select(p => p.Value["course"].ToObject<Course>())
.ToList();
foreach (Course c in courses)
{
Console.WriteLine(c.Name);
}
输出:
Foo
Bar
fiddle :https://dotnetfiddle.net/cpN2DE
关于c# - 找不到使用 Json.Net 反序列化 Json 索引数组的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29886484/