在将一个对象序列化是时候提示如下信息:不应为数据协定名称为“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; }
是不是没有打上datacontact特性标签啊!没用过DataContractJsonSerializer这个序列化json数据,个人简单的用JavaScriptSerializer,项目中还是json.net进行序列化json数据
引用的类中已经打上了datacontact特性标签,在网上好像没有关于这方面的资料,郁闷。。。
@清风吹过的日子: 恩 用这种方式转成json 貌似不多 还是用json.net来处理吧
你这是用EF查出来的对象吧,如果是EF查询出来的对象,其实是被继承的一个子类对象,
类名后面那个东西,就是随机出来的类名
你重新NEW个对象,手动给各属性赋值试试
好的,我试试。
试过了,是可以的,就是得多一遍循环了,不过还好,每次循环,只有十条记录
看起来应该先把Linq对象转为你自己定义的类型的实例,然后再序列化。
谢谢大家,我重新写了一个序列化的方法,搞定
请问楼主怎么解决的 ?
我也想知道