我一直在寻找并试图让它工作几个小时,我完全没有想法。我有JSON文本,我正在尝试阅读,无法看到它让它工作。这是JSON文本。
[{“first_aired”:“2018-03-03T01:00:00.000Z”,“剧集”:{“season”:3,“number”:13,“title”:“警告镜头”,“ids”:{ “trakt”:2814272,“tvdb”:6445735,“imdb”:“tt7462514”,“tmdb”:1429184,“tvrage”:0}},“show”:{“title”:“Blindspot”,“year” :2015,“ids”:{“trakt”:98980,“slug”:“blindspot”,“tvdb”:295647,“imdb”:“tt4474344”,“tmdb”:62710,“tvrage”:44628}}} ,{“first_aired”:“2018-03-03T01:00:00.000Z”,“剧集”:{“season”:2,“number”:16,“title”:“Hammock + Balcony”,“ids”: {“trakt”:2874663,“tvdb”:6535389,“imdb”:“tt7820776”,“tmdb”:1428050,“tvrage”:0}},“show”:{“title”:“MacGyver”,“year “:2016,”ids“:{”trakt“:107792,”slug“:”macgyver-2016“,”tvdb“:311902,”imdb“:”tt1399045“,”tmdb“:67133,”tvrage“:{ }}}}]
我正试图获得“剧集 - >季节”和“剧集 - >数字”这是我一直在使用的代码,也是下面的小提琴。
string json = "[{\"first_aired\":\"2018-03-03T01:00:00.000Z\",\"episode\":{\"season\":3,\"number\":13,\"title\":\"Warning Shot\",\"ids\":{\"trakt\":2814272,\"tvdb\":6445735,\"imdb\":\"tt7462514\",\"tmdb\":1429184,\"tvrage\":0}},\"show\":{\"title\":\"Blindspot\",\"year\":2015,\"ids\":{\"trakt\":98980,\"slug\":\"blindspot\",\"tvdb\":295647,\"imdb\":\"tt4474344\",\"tmdb\":62710,\"tvrage\":44628}}},{\"first_aired\":\"2018-03-03T01:00:00.000Z\",\"episode\":{\"season\":2,\"number\":16,\"title\":\"Hammock + Balcony\",\"ids\":{\"trakt\":2874663,\"tvdb\":6535389,\"imdb\":\"tt7820776\",\"tmdb\":1428050,\"tvrage\":0}},\"show\":{\"title\":\"MacGyver\",\"year\":2016,\"ids\":{\"trakt\":107792,\"slug\":\"macgyver-2016\",\"tvdb\":311902,\"imdb\":\"tt1399045\",\"tmdb\":67133,\"tvrage\":null}}}]";
JArray obj = Newtonsoft.Json.JsonConvert.DeserializeObject<JArray>(json);
foreach (var result in obj)
{
foreach (JObject tvshow in result["episode"])
{
string season_num = (string)tvshow["season"];
string episode_num = (string)tvshow["number"];
Console.WriteLine(season_num + " - " + episode_num );
}
}
https://dotnetfiddle.net/speUyL
感谢任何人都可以给我的帮助!
你实际上有嵌套对象,所以你需要首先提取episode
对象然后从episode
你可以访问它的属性number
和season
等:
foreach (var result in obj)
{
var episode = result["episode"];
Console.WriteLine(episode["season"]);
Console.WriteLine(episode["number"]);
}
这将打印您尝试执行的结果。以下是更新的小提琴演示:
https://dotnetfiddle.net/WN545C
一个简单的方法是为你的json设置DTO c#类,然后将json结果反序列化为List<T>
。你的json的类将是:
public class Ids
{
public int trakt { get; set; }
public int tvdb { get; set; }
public string imdb { get; set; }
public int tmdb { get; set; }
public int tvrage { get; set; }
}
public class Episode
{
public int season { get; set; }
public int number { get; set; }
public string title { get; set; }
public Ids ids { get; set; }
}
public class Ids2
{
public int trakt { get; set; }
public string slug { get; set; }
public int tvdb { get; set; }
public string imdb { get; set; }
public int tmdb { get; set; }
public object tvrage { get; set; }
}
public class Show
{
public string title { get; set; }
public int year { get; set; }
public Ids2 ids { get; set; }
}
public class Season
{
public DateTime first_aired { get; set; }
public Episode episode { get; set; }
public Show show { get; set; }
}
获取生成的类的简单方法是使用Json2CSharp.com或使用可以paste JSON as C# classes using Paste Special的Visual Studio功能。现在,您可以更好地反序列化和访问每个季节数据:
var seasons = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Season>>(json);
foreach (var season in seasons)
{
Console.WriteLine(season.episode.title);
Console.WriteLine(season.first_aired);
Console.WriteLine(season.episode.season);
Console.WriteLine(season.episode.number);
}
你可以在这里玩这个演示: