【发布时间】:2019-10-18 08:05:29
【问题描述】:
我在 WCF 服务中序列化字典时遇到问题。
[DataContract]
public class UserInfo
{
[DataMember]
public Guid ID { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public IDictionary<string, List<string>> Permissions { get; set; } = new Dictionary<string, List<string>>();
}
这是当前响应的示例
{
"ID": "1",
"Name": "admin",
"Permissions": [
{
"Key": "Users",
"Value": [
"Read",
"Edit"
]
},
{
"Key": "Management",
"Value": [
"Read"
]
}
]
}
这是期望的回应
{
"ID": "1",
"Name": "admin",
"Permissions": {
"Users": ["Read", "Edit"],
"Management": ["Read"]
}
}
有没有办法在全局或特定属性上实现这一点?
【问题讨论】:
-
谢谢,我会尝试那个解决方案,不过我会再留一个问题,看看是否有人发布任何序列化解决方案。
-
那么成功了吗?
-
当使用 AjaxDictionary
我得到 - 类型 'System.String[]' 与数据协定名称 'ArrayOfstring:schemas.microsoft.com/2003/10/Serialization/Arrays' 不是预期的。如果您使用 DataContractSerializer 或将任何静态未知的类型添加到已知类型列表中,请考虑使用 DataContractResolver - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给序列化程序的已知类型列表中。
标签: wcf dictionary datacontractjsonserializer json-serialization