DataContractJsonSerializer动态对象反序列化

时间:2015-09-21 13:45:08

标签: c# json uwp

我想使用DataContractJsonSerializer而不是任何第三方库,比如Json.NET我需要反序列化Json流,这可能是我的C#类之一,我不知道它是我想要做的是反序列化json数据 - >确定此对象的类型 - >根据此对象的类型对反序列化对象执行某些操作。与DataContractJsonSerializer.KnownTypes属性有什么关系吗?我是json的新手。

2 个答案:

答案 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);
                    }
                }