将 JSON 反序列化为 C# 类,其中 JSON 中的属性名称是动态的

snappymcsnap

我正在使用 JSON.NET 包将 JSON 响应反序列化到 C# 类,但 json 的格式很奇怪。他们发回了一个项目数组,其中每个项目的 name 属性都设置为 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 道具)。谢谢

脱衣战士

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

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

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章