如何使用datacontractjsonserializer对字典进行典范化?
-
11-10-2019 - |
题
我有以下模型:
[DataContract]
public class MessageHeader
{
private Guid? messageId;
public Guid MessageId
{
get
{
if (messageId == null)
messageId = Guid.NewGuid();
return messageId.Value;
}
}
[DataMember]
public string ObjectName { get; set; }
[DataMember]
public Dictionary<string, object> Parameters { get; set; } // Can't deserialize this
[DataMember]
public Action Action { get; set; }
[DataMember]
public User InitiatingUser { get; set; }
}
现在出于某些未知原因, datacontractjsonserializer无法将json当作词典 (请参阅其他详细信息部分)。
不幸的是,Datacontractjsonserializer也因超出我的原因而被密封。
我需要一种解决方案的方法,有人知道吗?
解决方案
由于JavaScript中没有字典类型,因此很难将JSON Deparse纳入其中。您要做的就是自己写一个转换器。
但是,在大多数自定义序列化对象上也是如此,因此希望这并不令人惊讶。
但是,现在它应该作为KeyValuepair读入,以便您可以尝试,以查看至少对您来说是否值得注意。相反,您需要一个 List<KeyValuePair<>>
什么 Dictionary<string,string>
转换为JSON:
var dict = new Dictionary<string,string>;
dict["Red"] = "Rosso";
dict["Blue"] = "Blu";
dict["Green"] = "Verde";
[{"Key":"Red","Value":"Rosso"},
{"Key":"Blue","Value":"Blu"},
{"Key":"Green","Value":"Verde"}]
从JavaScript到JSON的同一协会:
var a = {};
a["Red"] = "Rosso";
a["Blue"] = "Blu";
a["Green"] = "Verde";
{"Red":"Rosso","Blue":"Blu","Green":"Verde"}
因此,简而言之存在问题。
有用的一些后续链接
不隶属于 StackOverflow