
[英]JSON serialize/deserialize with Dictionary using .NET DataContractJsonSerializer serializer
[英]How to deserialize a dictionary using DataContractJsonSerializer?
我有以下模型:
[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解析为一个。 您要做的就是自己编写一个转换器。
但是,对于大多数自定义序列化对象也是如此,因此希望这并不奇怪。
但是,现在应该以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"}
简而言之,就是问题所在。
一些有用的后续链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.