我正在尝试使用英雄联盟API制作程序。 API不会返回对象数组。每个冠军都有不同的对象。我的问题是,如何将这些对象放入c#列表而不必为C#中的每个冠军制作一个对象? https://global.api.pvp.net/api/lol/static-data/euw/v1.2/champion?api_key=362039df-6ce4-4e2f-ac3c-27d246d03f45 (这是我得到的json列表) 我有以下代码来转换对象,但显然它无法填充列表。
var webclient = new WebClient();
var strJson = webclient.DownloadString("https://global.api.pvp.net/api/lol/static-data/euw/v1.2/champion?api_key=362039df-6ce4-4e2f-ac3c-27d246d03f45");
var List<ChampionJson> = JsonConvert.DeserializeObjectList<<ChampionJson>>(strJson);
这是冠军级别:
public class ChampionJson
{
public Champion champion { get; set; }
}
public class Champion
{
[JsonProperty("id")]
public int id { get; set; }
[JsonProperty("key")]
public string key { get; set; }
[JsonProperty("name")]
public string name { get; set; }
[JsonProperty("title")]
public string title { get; set; }
}
我知道这可能是完全错误的我正在做什么,但对于Json来说我是一个新手。我过去两天一直试图让它工作,但我在互联网上找不到任何东西。 请帮忙, 提前谢谢!
答案 0 :(得分:1)
您的对象基本上需要反映JSON提供的模型。你很亲密;我会将ChampionJson对象定义更改为:
public class ChampionJson { public Dictionary<string, Champion> data { get; set; } }
然后使用
JsonConvert.DeserializeObject<ChampionJson>(strJson)
而不是
JsonConvert.DeserializeObjectList<<ChampionJson>>(strJson)