C# JavaScriptSerializer:无法反序列化包含HashSet字段的对象

C# JavaScriptSerializer:无法反序列化包含HashSet字段的对象,c#,json,C#,Json,我正在尝试使用JavaScriptSerializer从JSON字符串反序列化以下类的实例: public class Filter { public HashSet<int> DataSources { get; set; } } 公共类过滤器 { 公共HashSet数据源{get;set;} } 以下是我正在尝试的代码: Filter f = new Filter(); f.DataSources = new HashSet<

我正在尝试使用JavaScriptSerializer从JSON字符串反序列化以下类的实例:

public class Filter
{
    public HashSet<int> DataSources { get; set;  }
}
公共类过滤器
{
公共HashSet数据源{get;set;}
}
以下是我正在尝试的代码:

        Filter f = new Filter();

        f.DataSources = new HashSet<int>(){1,2};

        string json = (new JavaScriptSerializer()).Serialize(f);         

        var g= (new JavaScriptSerializer()).Deserialize<Filter>(json);
Filter f=new Filter();
f、 DataSources=newhashset(){1,2};
字符串json=(新的JavaScriptSerializer()).Serialize(f);
var g=(新的JavaScriptSerializer())。反序列化(json);
它会出错,并显示以下消息:

“System.Collections.Generic.List
1[System.Int32]类型的对象”
无法转换为类型
'System.Collections.Generic.HashSet
1[System.Int32]'

显然,序列化程序无法从JSON表示中区分列表和集合。解决这个问题的办法是什么

注意:由于工作中的限制,我宁愿避免使用外部库

解决这个问题的办法是什么

使用。这个代码可以工作

Filter f = new Filter();

f.DataSources = new HashSet<int>() { 1, 2 };

string json = JsonConvert.SerializeObject(f);

var g = JsonConvert.DeserializeObject<Filter>(json);

这是我的简单但不是很好的解决方案,但它很有效

var dataList = new JavaScriptSerializer().Deserialize<List<int>>(returnData);
var data = new HashSet<int>(dataList);
var dataList=new JavaScriptSerializer()。反序列化(returnData);
var数据=新哈希集(数据列表);

谢谢!但我的工作要求我避免使用外部库。任何使用.net内置库的解决方案都是非常有用的help@I4V
DataContractJsonSerializer
非常有效。谢谢
var dataList = new JavaScriptSerializer().Deserialize<List<int>>(returnData);
var data = new HashSet<int>(dataList);