在一个类中使用多个可能的对象名称反序列化JSON字符串

iMaximuz

我正在从一个游戏中请求3个不同用户的服务器。

结果得到了这个JSON字符串:

{
   "d4r1o": {
      "id": 1040806,
      "name": "D4R1O",
      "profileIconId": 596,
      "revisionDate": 1399366400000,
      "summonerLevel": 30
   },
   "snnovox": {
      "id": 65728,
      "name": "SN Novox",
      "profileIconId": 548,
      "revisionDate": 1399369344000,
      "summonerLevel": 30
   },
   "gmbecken": {
      "id": 421545,
      "name": "GM Becken",
      "profileIconId": 26,
      "revisionDate": 1399160360000,
      "summonerLevel": 30
   }
}

所以为了反序列化这个字符串,我有这些类

public class RootObject
{
    public SummonerDto d4r1o { get; set; }
    public SummonerDto snnovox { get; set; }
    public SummonerDto gmbecken { get; set; }
}

public class SummonerDto
{
    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; }
}

这很好用,但是如果用户想请求有关其自己的用户名的请求,例如:snyucax

    {"snyucax": {
   "id": 48985,
   "name": "SN YucaX",
   "profileIconId": 504,
   "revisionDate": 1399257043000,
   "summonerLevel": 30
}}

有没有一种方法可以使RootObject类中的一个对象仅允许我使用任何用户名,而不必将该名称指定为对象?

亚历山大·福布斯·里德

您应该为此使用字典。如果您使用的是JSON.NET,则代码如下所示:

var users = JsonConvert.DeserializeObject<Dictionary<string, SummonerDto>>(jsonDataString);

然后,您可以通过以下方式获取用户:

var user = users["d4r1o"];

e:好像Tim S打败我了,哈哈。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用未知对象名称反序列化JSON

使用Json.net通过一些更改的对象名称反序列化Json

JSON.parse() 无法反序列化包含 JSON 字符串的数组的最后一个索引

如何使用类字符串值反序列化对象

在C#中使用Newtonsoft.JSON努力反序列化JSON字符串

使用Cereal反序列化JSON字符串

使用 JavaScriptSerializer 反序列化 json 字符串

序列化同一JSON中的两个对象,然后通过Redis从传入的字符串中反序列化它们

在R中反序列化一个字符串

在python中使用json反序列化字符串时出错

使用Json.Net反序列化,将子对象反序列化为包含json的字符串/类似字符串?

在再次反序列化之前,替换序列化为字符串的对象中可能嵌套的字符串

使用子对象中嵌入的字符串值反序列化JSON字符串

反序列化对象作为字符串的JSON字符串

通过类的字符串名称将JSON对象反序列化为运行时动态创建的特定实例

使用同一个类反序列化不同的json文件

反序列化具有对象 ID 作为对象名称的 JSON 对象列表

C#Json反序列化在json字符串中的第一个字符处失败

将两个略有不同的JSON字符串(相同的结构,不同的名称)反序列化为同一类

用可能是字符串或整数的字段反序列化JSON对象的最佳实践是什么?

当对象名称为Integer时,Java GSON反序列化JSON

在 C# 中反序列化不断变化的 JSON 对象名称

FabricJS如何重新添加字符串化的json对象(反序列化)

反序列化xml字符串并忽略root中的第一个元素

哈希一个PHP序列化对象VS哈希一个序列化对象的字符串

从 JSON 字符串反序列化选定的 JSON 对象

如何反序列化一个对象中的多个对象?

反序列化同一个类的替代名称

如何反序列化JSON字符串以枚举