为什么JSON没有反序列化为NameValueCollection

本文关键字:NameValueCollection 反序列化 JSON 为什么 | 更新日期: 2023-09-27 18:01:05

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

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

我将它传递给PageMethod,并期望它将被反序列化为Dictionary<string, object>。它运行正常。但当我用NameValueCollection替换PageMethod签名中的Dictionary时,反序列化失败。为什么?

为什么JSON没有反序列化为NameValueCollection

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

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

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

您可以尝试"映射"。在代码中,可以使用属性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; }
相关文章:
  • 没有找到相关文章