1

我在客户端有 JSON 对象,如下所示:

    var myObject = {
      data1: 1,
      data2: 5,
      .......
    }

我将它传递给PageMethod并期望它将被反序列化为Dictionary<string, object>. 它工作正常。但是当我用反序列化替换DictionaryPageMethod 签名时NameValueCollection失败了。为什么?

4

3 回答 3

1

NameValueCollection 不能像 Dictionary 那样序列化,因为它没有实现 IDictionary。

您可以将其转换为字典,然后尝试序列化。

于 2013-02-26T12:59:57.293 回答
1

因为页面方法使用的 JavaScriptSerializer 无法将此 JSON 结构反序列化为弱类型 NameValueCollection。为什么要这样做而不是使用强类型字典呢?

于 2013-02-26T12:59:03.803 回答
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; }
于 2013-07-30T08:06:33.750 回答