1

我目前正在做一个项目,我向 Riot Games API 发出请求,解析 JSON,并用它做一些事情。我有请求工作,我知道我得到了有效的 JSON。我的问题是使用 JSON.Net 反序列化 JSON。

JSON具有以下结构:

{
  "xarcies": {
        "id": 31933985,
        "name": "Farces",
        "profileIconId": 588,
        "revisionDate": 1450249383000,
        "summonerLevel": 30
    }
}

我想将此数据加载到以下类中

[JsonObject(MemberSerialization.OptIn)]
class Summoner
{
    [JsonProperty("id")]
    public long id {get;set;}

    [JsonProperty("name")]
    public string name { get; set; }

    [JsonProperty("profileIconId")]
    public int profileIconId { get; set; }

    [JsonProperty("revisionDate")]
    public long revisionDate { get; set; }

    [JsonProperty("summonerLevel")]
    public long summonerLevel { get; set; }
}

我遇到的问题是,因为我得到了一个包含我需要的信息的“xarcies”对象,所以我不确定如何设计一个可以接受 JSON 数据的类。我见过一些使用 RootObject 类来获取对象的示例,并且该类有一个子类,所有对都放入其中,但我似乎无法让它工作。每次我运行它时,对象的属性最终都是 NULL。

4

2 回答 2

1

您可以将 JSON 反序列化为Dictionary<string, Summoner>

var root = JsonConvert.DeserializeObject<Dictionary<string, Summoner>>(jsonString);

字典将由用户名作为键,在本例中为"xarcies"。请参阅反序列化字典

于 2015-12-16T22:18:05.133 回答
0

我刚刚使用json2csharp创建了以下类(它的类型看起来和你的有点不同):

public class UserData
{
    public int id { get; set; }
    public string name { get; set; }
    public int profileIconId { get; set; }
    public long revisionDate { get; set; }
    public int summonerLevel { get; set; }
}

public class RootObject
{
    public KeyValuePair<string, UserData> value { get; set; }
}
于 2015-12-16T22:08:26.330 回答