C# JavaScriptSerializer:无法反序列化包含HashSet字段的对象
我正在尝试使用JavaScriptSerializer从JSON字符串反序列化以下类的实例: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<
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.List1[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@I4VDataContractJsonSerializer
非常有效。谢谢
var dataList = new JavaScriptSerializer().Deserialize<List<int>>(returnData);
var data = new HashSet<int>(dataList);