的JSON即将在这样的(伪代码):如何反序列化这个JSON数组
[{one-off intro object}, [{object},{object},{object}]]
所以这是一个数组,其中数组中的第一件事情是一个对象,我没兴趣和其次是另一个阵列,其中充满了我实际想要反序列化的对象。
我该如何使用JSON.NET做到这一点?
的JSON即将在这样的(伪代码):如何反序列化这个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>>();
从那里,您可以像平常一样使用项目列表。
非常感谢! –
没问题;很高兴我能帮上忙。 –
您可以通过强类型铸造到第二组对象或动态,这里是动态做的一个例子:
dynamic jsonArray = JArray.Parse(json);
dynamic targetJsonObjects = jsonArray[1];
只有在设计时无法知道结构的情况下才应使用动态。 – mason
你试过就这样简单的模型?
public class RootObject
{
public object IntroObject { get; set; }
public List<Item> Items { get; set; }
}
public class Item
{
public string WhatEverPropertyYouNeed{ get; set; }
}
这个结构实际上不会工作,因为JSON的外部是一个数组,而不是一个对象。 –
请仔细阅读[问],提供[MCVE](强调** **可验证的,当你表现出明显的不是有效的JSON),并分享你已经尝试了什么。 – CodeCaster
你尝试过什么吗?任何具体问题? – Andrei
那么首先你应该[看看它是否是有效的JSON](http://jsonlint.com/)(提示,它不是) – mason