如何将json中的多个单个对象转换为C#对象列表?

时间:2016-03-09 13:07:45

标签: c# json api

我正在尝试使用英雄联盟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来说我是一个新手。我过去两天一直试图让它工作,但我在互联网上找不到任何东西。 请帮忙, 提前谢谢!

1 个答案:

答案 0 :(得分:1)

您的对象基本上需要反映JSON提供的模型。你很亲密;我会将ChampionJson对象定义更改为:

public class ChampionJson { public Dictionary<string, Champion> data { get; set; } }

然后使用

JsonConvert.DeserializeObject<ChampionJson>(strJson) 

而不是

JsonConvert.DeserializeObjectList<<ChampionJson>>(strJson)