C# 如何反序列化此JSON数组

C# 如何反序列化此JSON数组,c#,asp.net,json.net,C#,Asp.net,Json.net,JSON如下所示(伪代码): 所以它是一个数组,数组中的第一件事是我不感兴趣的对象,第二件事是另一个数组,其中充满了我想要反序列化的对象 如何使用JSON.NET实现这一点 您可以通过强类型转换或动态方式访问第二组对象,下面是一个动态操作的示例: dynamic jsonArray = JArray.Parse(json); dynamic targetJsonObjects = jsonArray[1]; 你试过这样简单的模型吗 public class RootObjec

JSON如下所示(伪代码):

所以它是一个数组,数组中的第一件事是我不感兴趣的对象,第二件事是另一个数组,其中充满了我想要反序列化的对象


如何使用JSON.NET实现这一点

您可以通过强类型转换或动态方式访问第二组对象,下面是一个动态操作的示例:

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; }
}
公共类根对象
{
公共对象IntroObject{get;set;}
公共列表项{get;set;}
}
公共类项目
{
公共字符串WhatEverPropertyYouNeed{get;set;}
}
您可以使用Json.Net来完成这项工作

例如,假设您的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>>();
JArray ja=JArray.Parse(json); List=ja[1].ToObject(); 从那里,您可以像平常一样使用项目列表


Fiddle:

请阅读,提供(强调可验证,因为您显示的显然不是有效的JSON)并分享您尝试过的内容。您尝试过什么吗?有什么特别的问题吗?首先你应该(提示,不是)在你感兴趣的JSON部分,数组中的所有对象都有相同的结构吗?好的,很好;这很有帮助。我添加了一个答案来说明基本方法。动态应该只在设计时无法知道结构的情况下使用。这个结构实际上不起作用,因为JSON的外部是一个数组,而不是一个对象。非常感谢!没问题;很高兴我能帮忙。
JArray ja = JArray.Parse(json);
List<Item> list = ja[1].ToObject<List<Item>>();