我想使用DataContractJsonSerializer而不是任何第三方库,比如Json.NET我需要反序列化Json流,这可能是我的C#类之一,我不知道它是我想要做的是反序列化json数据 - >确定此对象的类型 - >根据此对象的类型对反序列化对象执行某些操作。与DataContractJsonSerializer.KnownTypes属性有什么关系吗?我是json的新手。
答案 0 :(得分:0)
我想要做的是反序列化json数据 - >确定此对象的类型 - >根据此对象的类型对反序列化对象执行某些操作。与DataContractJsonSerializer.KnownTypes属性有关吗?
是的,它与已知类型有关。首先,您需要在构造函数中指定要反序列化的类型。然后,您可以指定可能存在于对象图中的类型。
DataContractJsonSerializer Constructor (Type, IEnumerable)
但是我仍然建议你使用JSON.NET,它比DataContractJsonSerializer更容易,性能更好。在ASP.NET Web API中,JSON.NET是默认的JSON序列化程序。
答案 1 :(得分:0)
或JavaScriptSerializer
var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<Dictionary<string, dynamic>>(strRet);
StringBuilder sbErr = new StringBuilder(string.Format("{0} ({1}): {2}", rep.StatusDescription, dict["code"], Environment.NewLine));
if ((dict["errors"] is Dictionary<string, dynamic>)) {
foreach (KeyValuePair<string, dynamic> item in dict["errors"]) {
sbErr.AppendFormat("{0}=", item.Key);
foreach (string item2 in item.Value)
sbErr.AppendFormat("{0}. ", item2);
}
}