【问题标题】:Deserializing JSON to C# class where property names in the JSON are dynamic将 JSON 反序列化为 C# 类,其中 JSON 中的属性名称是动态的
【发布时间】:2021-11-06 06:49:40
【问题描述】:

我正在使用 JSON.NET 包来反序列化对 C# 类的 JSON 响应,但 json 的格式很奇怪。他们正在发回一个项目数组,其中每个项目的名称属性都设置为 ID(很奇怪,因为正如您在下面看到的,ID 已经作为“player_id”出现在对象的主体中)。像这样:

{
    "5131": {
        "player_id": 5131,
        "prop1": "val1",
        "prop2": null,
        "prop3": "val3"
    },
    "5132": {
        "player_id": 5132,
        "prop1": "val1",
        "prop2": null,
        "prop3": "val3"
    }
}

通常您会有一个名称-值对,其中名称是标准的“玩家”,并且您会将 id 作为对象中的属性。

有没有办法围绕它定义一个 C# 类,它将反序列化为我需要的东西(只是一个项目数组,没有动态命名的 id 道具)。谢谢

【问题讨论】:

  • 您可以使用Dictionary<string, PROPCLASS>PROPCLASS 作为定义属性的新类。
  • 这能回答你的问题吗? json deserialization to C#

标签: c# json json.net


【解决方案1】:

由于每个对象都有一个与对象键值匹配的player_id,因此您无需担心捕获对象键。我只是先将其序列化为字典,然后从该字典中获取值。

var players = JsonConvert.DeserializeObject<Dictionary<string, Player>>(input).Values;

【讨论】:

  • 啊,当然,太简单了:)谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多