DataContractJsonSerializer动态对象反序列化

本文关键字:反序列化 对象 动态 DataContractJsonSerializer | 更新日期: 2023-09-27 18:13:50

我想用DataContractJsonSerializer代替任何第三方库,如Json。. NET我需要反序列化Json流,它可以是我的c#类之一,我不知道哪一个是我想做的是反序列化Json数据->确定这个对象的类型->做一些与反序列化对象根据这个对象的类型。有什么与DataContractJsonSerializer。类型属性?我对json很陌生

DataContractJsonSerializer动态对象反序列化

我想做的是反序列化json数据->确定这个对象的类型->根据这个对象的类型做一些反序列化的对象。有什么与DataContractJsonSerializer。类型属性?

是的,它与已知的类型有关。首先,需要在构造函数中指定要反序列化的类型。然后可以指定对象图中可能存在的类型

DataContractJsonSerializer Constructor (Type, IEnumerable)

但是我仍然建议你使用JSON。NET,它将比DataContractJsonSerializer更简单,性能甚至更好。在ASP。. NET Web API, JSON。. NET是默认的JSON序列化器。

或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);
                    }
                }