这是我想要使用本机Javascript支持反序列化为Dictionary的JSON。
string data = "{"Symptom":[true,true,true],"Action":[true,true],"AllArea":true}";
但是当我尝试使用下面的代码反序列化时
Dictionary values = new System.Web.Script.Serialization.JavaScriptSerializer()。Deserialize>(data);
它给我一个错误陈述
"Type 'System.String' is not supported for deserialization of an array"
我正在使用.Net Framework 3.5。请帮我完成这件事。
答案 0 :(得分:0)
我想你不能直接将它转换成字典...我认为deserializer
需要一个相应的类型,其中可理解的属性名称带有类型,
我认为您可以转换为type
,然后生成dictionary
,例如:
public class MyClass
{
public List<bool> Symptom { get; set; }
public List<bool> Action { get; set; }
public bool AllArea { get; set; }
public Dictionary<string, List<bool>> getDic()
{
// this is for example, and many many different may be implement
// maybe some `reflection` for add property dynamically or ...
var oDic = new Dictionary<string, List<bool>>();
oDic.Add("Symptom", this.Symptom);
oDic.Add("Action", this.Action);
oDic.Add("AllArea", new List<bool>() { AllArea });
return oDic;
}
}
然后:
string data = "{\"Symptom\":[true,true,true],\"Action\":[true,true],\"AllArea\":true}";
System.Web.Script.Serialization.JavaScriptSerializer aa = new System.Web.Script.Serialization.JavaScriptSerializer();
var o = aa.Deserialize<MyClass>(data);
var dic = o.getDic();
无论如何,这是一个很好的问题