我在客户端有JSON对象,如下所示:
var myObject = {
data1: 1,
data2: 5,
.......
}
我将其传递给PageMethod
并期望它将被反序列化为Dictionary<string, object>
。它运作正常。但是当我用Dictionary
反序列化替换PageMethod签名中的NameValueCollection
失败时。为什么呢?
答案 0 :(得分:1)
因为页面方法使用的JavaScriptSerializer无法将此JSON结构反序列化为弱类型的NameValueCollection。你为什么要这样做而不是使用强类型字典?
答案 1 :(得分:1)
NameValueCollection不能像Dictionary那样被序列化,因为它没有实现IDictionary。
您可以将其转换为字典,然后尝试序列化。
答案 2 :(得分:0)
您可以尝试“映射”。在代码中,您可以使用属性Coll作为NameValueCollection,但序列化/反序列化适用于CollDictionary。
public NameValueCollection Coll
{
get
{
var nvc = new NameValueCollection();
CollDictionary.Keys.ToList().ForEach(a => nvc.Add(a, CollDictionary[a]));
return nvc;
}
set
{
CollDictionary = value.AllKeys.ToDictionary(k => k, k => value[k]);
}
}
[JsonProperty(PropertyName = "Coll")]
public Dictionary<string, string> CollDictionary { get; set; }