【发布时间】:2021-12-10 10:09:15
【问题描述】:
我想在 c# 中使用 System.Text.Json 的 JsonSerializer.Deserialize 反序列化一个 json 对象。
json 看起来像这样:
{
"id":10,
"authorization_ids":[
],
"karma_user_ids":[
2
],
"group_ids":{
"2":[
"full"
],
"4":[
"read"
],
"5":[
"overview"
],
"7":[
"change",
"overview"
],
"10":[
"create"
]
}
}
但属性group_ids 包含具有动态属性名称的对象,实际上对应于组的ID。
{
2 : {full}
4 : {read}
5 : {overview}
7 : {change, overview}
10 : {create}
}
现在我想将 group_ids 反序列化为这样的对象:
public class GroupPermission
{
public int GroupID { get; set; }
public Permission Permission { get; set; }
public GroupPermission() { }
}
[Flags]
public enum Permission
{
full = 1,
read = 2,
overview = 4,
change = 8,
create = 16
}
这可能吗?有人能指出正确的方向吗?
【问题讨论】:
-
您能否添加带有
group_idsJSON 数据的完整 JSON?不清楚它的行为 -
@SachithWickramaarachchi 坦克,但你是什么意思? group_ids 的 json 是上面的第二个 json 代码块。但我添加了一条评论以使其更清楚。
-
块 1 和块 2 都不是有效的 JSON。请出示您的实际 JSON
-
@Charlieface 对...对不起。更新了线程并添加了 json。
-
这能回答你的问题吗? json deserialization to C# with dynamic keys 在这种情况下,
group_ids应该反序列化为Dictionary<int, List<string>>,字典键是 ID
标签: c# json serialization dynamic system.text.json