我正在尝试使用Riot游戏REST API在C#中制作一个Webapp。我可以使用RESTSharp发出请求,但是使用JSON.Net将返回的Json转换为对象时遇到一些问题。我的请求返回一个JSON字符串,例如:
{\"dyrus\":{\"id\":4136713,\"name\":\"Dyrus\",\"profileIconId\":23,\"summonerLevel\":1,\"revisionDate\":1376908220000}}
我想反序列化到具有属性的对象是:id
,name
,profileIconID
,summonerLevel
和revisionDate
。
我遇到的问题是由于字典是嵌套的,因此信息被反序列化为字符串。检索字符串的嵌套Dictionary部分{\"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"];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句