我正在尝试使用Riot games REST API用 C# 制作一个 web 应用程序。我可以使用 RESTSharp 提出请求但使用 JSON.Net 时遇到一些问题将返回的 Json 转换为对象。我的请求返回一个 JSON 字符串,例如:
{\"dyrus\":{\"id\":4136713,\"name\":\"Dyrus\",\"profileIconId\":23,\"summonerLevel\":1,\“修订日期\”:1376908220000}}
我想将其反序列化为具有以下属性的对象:id
、name
、profileIconID
、summonerLevel
和修订日期
。
我遇到的问题是信息被反序列化为字符串,因为字典是嵌套的。检索字符串的嵌套字典部分的最佳方法是什么:{\"id\":4136713,\"name\":\"Dyrus\",\"profileIconId\":23,\"SummonerLevel\":1,\"revisionDate\":1376908220000}
并将其转换为对象?
感谢您的帮助!
编辑:
这是我尝试过的:
public class LeagueUser
{
public LeagueUser(string json)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = (string)serializer.DeserializeObject(json);
LeagueUser test = (LeagueUser)serializer.DeserializeObject(jsonString);
}
public int id { get; set; }
public string name { get; set; }
public long revisionDate { get; set; }
}
最佳答案
您不需要构造函数,更改 LeagueUser
类到此
public class LeagueUser
{
public int id { get; set; }
public string name { get; set; }
public long revisionDate { get; set; }
}
并使用Json.NET将 json 反序列化为 Dictionary<string, LeagueUser>
string jsonStr = "{\"dyrus\":{\"id\":4136713,\"name\":\"Dyrus\",\"profileIconId\":23,\"summonerLevel\":1,\"revisionDate\":1376908220000}}";
var deserializedObject = JsonConvert.DeserializeObject<Dictionary<string, LeagueUser>>(jsonStr);
您可以获得LeagueUser
反对这种方式
LeagueUser leagueUser = deserializedObject["dyrus"];
关于c# - 反序列化 JSON 字符串嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21938345/