JSON会像这样(伪代码):
[{one-off intro object}, [{object},{object},{object}]]
因此,这是一个数组,其中数组中的第一件事是我不感兴趣的对象,第二个是另一个装满我真正想要验证的对象的数组。
我该如何使用json.net做到这一点?
您可以使用json.net的linq-to-json api来完成这项工作。
为例,让我们假设您的JSON看起来像这样:
[
{
"blah": "nothing interesting here"
},
[
{
"id": 1,
"name": "foo",
"desc": "description of foo"
},
{
"id": 2,
"name": "bar",
"desc": "blurb about bar"
},
{
"id": 3,
"name": "baz",
"desc": "buzz about baz"
}
]
]
首先,定义一个类以将项目从您感兴趣的内部数组中保存。
public class Item
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("desc")]
public string Description { get; set; }
}
现在,您需要做的就是将JSON解析到JArray
,然后从中获取子阵列并使用ToObject()
将其转换为项目列表。
JArray ja = JArray.Parse(json);
List<Item> list = ja[1].ToObject<List<Item>>();
从那里,您可以使用往常的项目列表。
小提琴:https://dotnetfiddle.net/cafzux
您可以通过强烈键入或动态地到达第二组对象,这是动态进行操作的一个示例:
dynamic jsonArray = JArray.Parse(json);
dynamic targetJsonObjects = jsonArray[1];
您是否尝试过这样的简单模型?
public class RootObject
{
public object IntroObject { get; set; }
public List<Item> Items { get; set; }
}
public class Item
{
public string WhatEverPropertyYouNeed{ get; set; }
}