使用Json.Net解析嵌套的Json

NeoID

我是Json的新手,并试图了解如何使用Json.Net对其进行解析。我尝试为json输入创建对象,但被卡住了。我不太确定如何解析输入内容,因此可以对其进行迭代并输出季节编号和剧集名称。

谁能指出我正确的方向?

杰森:

{  
   "data":{  
      "1921":{  
         "1":{  
            "airdate":"1921-03-20",
            "name":"Cleaning Up!!?",
            "quality":"N/A",
            "status":"Wanted"
         },
         "2":{  
            "airdate":"1921-03-20",
            "name":"Kansas City Girls Are Rolling Their Own Now",
            "quality":"N/A",
            "status":"Wanted"
         },
         "3":{  
            "airdate":"1921-03-20",
            "name":"Did You Ever Take a Ride Over Kansas City Street 'in a Fliver'",
            "quality":"N/A",
            "status":"Wanted"
         },
         "4":{  
            "airdate":"1921-03-20",
            "name":"Kansas City's Spring Clean-Up",
            "quality":"N/A",
            "status":"Wanted"
         }
      },
      "1923":{  
         "1":{  
            "airdate":"2013-05-16",
            "name":"Alice's Wonderland - aka - Alice in Slumberland",
            "quality":"Unknown",
            "status":"Downloaded"
         }
      }
   },
   "message":"",
   "result":"success"
}

代码:

static void Main(string[] args)
        {
            RootObject data = JsonConvert.DeserializeObject<RootObject>(System.IO.File.ReadAllText(@"C:\Users\Benjamin\Desktop\json\input.txt"));
            foreach (var e in data)
            {
                // Being able to output Season and Episode name like:
                // 1921 - Cleaning Up!!?
            }
        }

        public class RootObject
        {
            public Dictionary<int, Season> data { get; set; }
            public string message { get; set; }
            public string result { get; set; }
        }

        public class Season
        {
            public Dictionary<string, Episode> number { get; set; }
        }

        public class Episode
        {
            public string airdate { get; set; }
            public string name { get; set; }
            public string quality { get; set; }
            public string status { get; set; }
        }
马特·伯兰德

更改您的RootObject

public class RootObject
{
    public Dictionary<int, Dictionary<string, Episode>> data { get; set; }
    public string message { get; set; }
    public string result { get; set; }
}

然后,您可以执行以下操作:

RootObject root = JsonConvert.DeserializeObject<RootObject>(data);
foreach (var s in root.data)
{
    foreach (var e in s.Value)
    {
        Console.WriteLine(string.Format("{0} - {1}", s.Key, e.Value.name));
        // access whatever properties you want here...
    }
}

请注意,我们已删除了该Season对象,因为JSON.net无法映射到该属性,number因为它不是原始JSON中的属性(您可以使其工作,但是需要自定义序列化一些摆弄)。

如果您真的想要LINQ解决方案,则类似于:

root.data.ToList().ForEach(s =>
{
    s.Value.ToList().ForEach(e =>
    {
        Console.WriteLine(string.Format("{0} - {1}", s.Key, e.Value.name));
    });
});

实现相同的目的,但是需要将字典复制到列表中,如果字典很大,则可能会出现问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Json.Net解析嵌套的Json

来自分类Dev

用json.net解析嵌套的json

来自分类Dev

json.net-无法解析嵌套对象

来自分类Dev

json.net-无法解析嵌套对象

来自分类Dev

使用.NET deserialize()和嵌套的“列表”进行JSON解析

来自分类Dev

使用.NET deserialize()和嵌套的“列表”进行JSON解析

来自分类Dev

使用JavaScript解析嵌套的json

来自分类Dev

使用JQuery解析嵌套的JSON

来自分类Dev

使用JavaScript解析嵌套的json

来自分类Dev

使用 PHP 解析嵌套的 JSON

来自分类Dev

使用 Codable 解析嵌套的 JSON

来自分类Dev

使用 Vuejs 解析嵌套的 JSON

来自分类Dev

解析嵌套的JSON数据

来自分类Dev

JSON嵌套解析

来自分类Dev

解析嵌套的JSON

来自分类Dev

嵌套JSON解析

来自分类Dev

使用GSON解析嵌套的JSON数据

来自分类Dev

使用JQuery解析JSON嵌套数组

来自分类Dev

如何使用DataContractJsonSerializer解析嵌套的json对象?

来自分类Dev

使用Volley解析嵌套的JSON对象

来自分类Dev

使用Python解析嵌套的json数据

来自分类Dev

在Swift中使用Decodable解析嵌套的JSON

来自分类Dev

使用Kotlinx.Serialization解析嵌套的JSON

来自分类Dev

如何使用骨干解析嵌套的json?

来自分类Dev

如何使用DataContractJsonSerializer解析嵌套的json对象?

来自分类Dev

使用Android的RetroFit解析嵌套的JSON

来自分类Dev

使用jquery和Ajax解析嵌套的JSON

来自分类Dev

如何使用GSON解析嵌套的JSON

来自分类Dev

使用 Codable 解析嵌套的 JSON 数据