首页 新闻 赞助 找找看

将对象序列化时报错

0
悬赏园豆:20 [已关闭问题] 关闭于 2015-03-19 09:28

在将一个对象序列化是时候提示如下信息:不应为数据协定名称为“User_3D3FAFBB9F677BE1CE5F19F6DBD72AEB32483C484D8D7CDF533788D749E06587:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies”的类型“System.Data.Entity.DynamicProxies.User_3D3FAFBB9F677BE1CE5F19F6DBD72AEB32483C484D8D7CDF533788D749E06587”。请考虑使用 DataContractResolver,或将任何未知类型以静态方式添加到已知类型的列表。例如,可以使用 KnownTypeAttribute 特性,或者将未知类型添加到传递给 DataContractSerializer 的已知类型列表。

不知各位有没有碰到这样的问题,有什么好的解决方法。

 /// <summary>
        /// josn序列化
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <returns></returns>
        public static string JsonSerializer<T>(T t)
        {
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
            MemoryStream ms = new MemoryStream();
            ser.WriteObject(ms, t);
            string jsonstring = Encoding.UTF8.GetString(ms.ToArray());
            ms.Close();
            return jsonstring;
        }
View Code

mczxmin的主页 mczxmin | 初学一级 | 园豆:196
提问于:2013-12-31 13:56
< >
分享
所有回答(6)
0

是不是没有打上datacontact特性标签啊!没用过DataContractJsonSerializer这个序列化json数据,个人简单的用JavaScriptSerializer,项目中还是json.net进行序列化json数据

秋壶冰月 | 园豆:5903 (大侠五级) | 2013-12-31 16:35

引用的类中已经打上了datacontact特性标签,在网上好像没有关于这方面的资料,郁闷。。。

支持(0) 反对(0) mczxmin | 园豆:196 (初学一级) | 2013-12-31 16:39

@清风吹过的日子: 恩 用这种方式转成json 貌似不多 还是用json.net来处理吧

支持(0) 反对(0) 秋壶冰月 | 园豆:5903 (大侠五级) | 2013-12-31 16:56
0

你这是用EF查出来的对象吧,如果是EF查询出来的对象,其实是被继承的一个子类对象,

类名后面那个东西,就是随机出来的类名

你重新NEW个对象,手动给各属性赋值试试

吴瑞祥 | 园豆:29449 (高人七级) | 2013-12-31 17:06

好的,我试试。

支持(0) 反对(0) mczxmin | 园豆:196 (初学一级) | 2013-12-31 17:59

  试过了,是可以的,就是得多一遍循环了,不过还好,每次循环,只有十条记录

支持(0) 反对(0) kdkler | 园豆:154 (初学一级) | 2016-07-14 15:51
0

看起来应该先把Linq对象转为你自己定义的类型的实例,然后再序列化。

飞扬的尘埃 | 园豆:1318 (小虾三级) | 2013-12-31 18:02
0

谢谢大家,我重新写了一个序列化的方法,搞定

mczxmin | 园豆:196 (初学一级) | 2014-01-22 11:59
0

请问楼主怎么解决的 ?

x喜德盛 | 园豆:202 (菜鸟二级) | 2016-02-22 11:57
0

我也想知道

kdkler | 园豆:154 (初学一级) | 2016-07-14 15:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册