c# - 反序列化 JSON 字符串嵌套字典

标签 c# json serialization json.net restsharp

我正在尝试使用Riot games REST API用 C# 制作一个 web 应用程序。我可以使用 RESTSharp 提出请求但使用 JSON.Net 时遇到一些问题将返回的 Json 转换为对象。我的请求返回一个 JSON 字符串,例如:

{\"dyrus\":{\"id\":4136713,\"name\":\"Dyrus\",\"profileIconId\":23,\"summonerLevel\":1,\“修订日期\”:1376908220000}}

我想将其反序列化为具有以下属性的对象:idnameprofileIconIDsummonerLevel修订日期

我遇到的问题是信息被反序列化为字符串,因为字典是嵌套的。检索字符串的嵌套字典部分的最佳方法是什么:{\"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/

相关文章:

json - 如何从 Linkedin API 获取公司 Logo ?

c# - 使用 DataContractJsonSerializer 设置 JSON 对象根

ios swift,如何转换 'object to nsdata'

c# - Linq to sql插入附加的实体对象

javascript - 动态生成一个选择类型,其中包含单击添加按钮时指定的选项

c# - 从具有匹配 ID 的两个列表创建树的方法

java - 如何在 java 中通过 TCP 连接发送序列化数据

时间:2019-03-17 标签:c#entityframeworkmixinglinqtoobjectswithlinqtoentities

json - 使用 jQuery 发布 json 来表达

javascript - 在 Highcharts 中自动刷新 Json 数据