将 JSON 反序列化为 C# class,其中 JSON 中的 属性 名称是动态的
Deserializing JSON to C# class where property names in the JSON are dynamic
我正在使用 JSON.NET 包反序列化对 C# class 的 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"
}
}
通常你会有一个名称-值对,其中的名称是像 'player' 这样的标准,而你的 ID 作为对象中的 属性。
有没有办法围绕这个定义一个 C# class,它将反序列化为我需要的东西(只是一个项目数组,没有动态命名的 id 道具)。谢谢
由于每个对象都有一个 player_id
与对象键值相匹配,因此您无需担心捕获对象键的问题。我只是先将它序列化为字典,然后从该字典中获取值。
var players = JsonConvert.DeserializeObject<Dictionary<string, Player>>(input).Values;
我正在使用 JSON.NET 包反序列化对 C# class 的 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"
}
}
通常你会有一个名称-值对,其中的名称是像 'player' 这样的标准,而你的 ID 作为对象中的 属性。
有没有办法围绕这个定义一个 C# class,它将反序列化为我需要的东西(只是一个项目数组,没有动态命名的 id 道具)。谢谢
由于每个对象都有一个 player_id
与对象键值相匹配,因此您无需担心捕获对象键的问题。我只是先将它序列化为字典,然后从该字典中获取值。
var players = JsonConvert.DeserializeObject<Dictionary<string, Player>>(input).Values;