【问题标题】:Serialize Unknown Types with DataContractJsonSerializer [duplicate]使用 DataContractJsonSerializer 序列化未知类型
【发布时间】:2013-12-10 05:42:21
【问题描述】:

我有这个方法来序列化我的对象:

    private static byte[] GetBytes(object obj) {
        byte[] result;
        using (MemoryStream ms = new MemoryStream()) {
            DataContractJsonSerializer ser = new DataContractJsonSerializer(obj.GetType());

            ser.WriteObject(ms, obj);
            result = ms.ToArray();
            ms.Close();
        }
        return result;
    }

这很正常,当我想使用它时,我的对象参数必须是一个用 [System.Runtime.Serialization.DataContract] 装饰的类,并且它的成员必须用 [System.Runtime.Serialization.DataMember] 装饰,但是怎么样当我想使用未知类型时:

var myVar = GetBytes(new { Name = "MyName", LastName = "LastName" });

如何用属性装饰未知类型

【问题讨论】:

    标签: c# silverlight serialization


    【解决方案1】:

    DataContractJsonSerializer 不适用于匿名类型。如果使用 DataContract 定义特定类型是不可能/合理的,请考虑简单地通过网络发送字典。

    看看这个帖子也How do I serialize a C# anonymous type to a JSON string?

    【讨论】:

    • 你发给我的链接,有人说使用 JavaScriptSerializer,这个类在 System.Web.Extensions.dll 中,但我不能在 Silverlight 中使用它,其他人说使用 Newtonsoft JSON.NET 但也这不能在 Silverlight 中使用,谢谢
    • 引用:“Json.NET 支持 Windows、Silverlight、Windows Phone、Mono、MonoTouch 和 MonoDroid”
    • 是的,我必须使用 Portable40 版本,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多