我想从外部API检索足球联赛的集合。来自服务器的响应如下所示:
{
"api": {
"results": 1496,
"leagues": [
{
"league_id": 1,
.....
返回的对象由“ api”字段组成,其中包含“结果”和“联盟”。我想反序列化代码并将其映射到代码中的联赛类对象。
var jsonString = await ExecuteUrlAsync(filePath, url);
var results = JsonConvert.DeserializeObject<IEnumerable<LeagueEntity>>(jsonString);
jsonString是正确的,但是当程序到达第二行时,出现异常:
Cannot deserialize the current JSON object (e.g. {\"name\":\"value\"}) into type 'System.Collections.Generic.IEnumerable".
我需要转到JSON文件中的“联盟”字段,并忽略其余的响应。如何实现?
参考方案
假设您的LeagueEntity
与api.leagues[*]
对象相对应,则可以使用JsonConvert.DeserializeAnonymousType()
挑选并反序列化JSON的有趣部分:
var leagues = JsonConvert.DeserializeAnonymousType(jsonString,
new { api = new { leagues = default(List<LeagueEntity>) } })
?.api?.leagues;
这避免了为api.leagues
容器对象创建显式数据模型的需要。它也应该比预加载到JToken
层次结构中更有效,然后作为第二步选择并反序列化api.leagues
数组。
演示小提琴here。
(或者,您可以使用How to auto-generate a C# class file from a JSON string的答案之一为整个JSON自动生成完整的数据模型。)
JSON.NET如何删除节点 - c#我有一个像下面这样的json:{ "d": { "results": [ { "__metadata": { }, "prop1": "value1", "prop2": "value2", "__some…
如何在ASP.NET Page_Load事件中识别RadButton启动回发的原因? - c#在我的ASP.NET页的Page_Load中,我试图确定某个按钮是否已单击并尝试回发:if (Page.IsPostBack) { if (Request.Params.Get("__EVENTARGUMENT") == "doStuff") doSomething(); } doStuff是标记内的JavaScrip…
java.net.URI.create异常 - javajava.net.URI.create("http://adserver.adtech.de/adlink|3.0") 抛出java.net.URISyntaxException: Illegal character in path at index 32: http://adserver.adtech.de/adlink|3.0 虽然n…
如何将POCO类传递给.NET Core配置 - c#我正在进行.NET Core应用程序的集成测试,并且想要使用一些测试配置。我的配置是一个POCO类,该类通过appsettings.json配置,然后通过IOptions<T>使用。在我的测试中,我想使用该类的实例。这是代码: var mySettings = GetTestSettings(); // factory method return…
弹出不去发布在asp.net - c#我有一个叫做sales的按钮,当我单击cancel it backback并插入表单中的值时,它有一个JavaScript弹出窗口,但是当我单击ok时,它不会回发,并且表单中的值也不会进入数据库( JavaScript按钮实际上是打印调用,当单击该按钮时,它会在打印对话框打开时要求打印,它不会回发并且数据库中未插入数据)这是JavaScript代码funct…