标签: serialization

XmlSerializer和BinaryFormatter之间有什么区别

我上周花了很长时间研究序列化.在那段时间里,我发现了很多使用BinaryFormatter或XmlSerializer的例子.不幸的是,我没有找到任何全面详细说明两者之间差异的例子.

我的好奇心的起源在于为什么BinaryFormatter能够直接反序列化到接口而XmlSerializer不能.Jon Skeet在回答" 在运行时转换为多个(未知类型) "时提供了直接二进制序列化到接口的示例.Stan R.在他对" XML Object Deserialization to Interface "的回答中使用XmlSerializer为我提供了实现目标的方法.

除了明显的BinaryFormatter利用二进制序列化,而XmlSerializer使用XML我想更全面地理解基本差异.何时使用其中一种或各自的利弊.

.net c# serialization xml-serialization binary-serialization

48
推荐指数
2
解决办法
3万
查看次数

asp.net中的DateTime的Javascript序列化没有提供javascript日期对象?

当我在.Net中将DateTime解析为json时,它返回一个字符串(即"\/Date(1249335194272)\/").如何让它返回一个js Date对象构造函数而不是换成字符串?

// js server code
var dteNow = <%= jsonDateNow %>;


// js rendered code
var dteNow = "\/Date(1249335477787)\/";


// C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.Script.Serialization;
using System.Web.UI.WebControls;

namespace testing{
    public partial class iTaxPrep : System.Web.UI.Page
    {
        protected string jsonDateNow;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                jsonDateNow = new JavaScriptSerializer().Serialize(DateTime.Now);

            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript c# asp.net serialization datetime

48
推荐指数
3
解决办法
4万
查看次数

我什么时候需要更改serialVersionUID?

我知道我可以使用serialVersionUID来控制类的版本.我读到我可以添加或删除字段,类仍然兼容,它只使用默认值.

什么时候必须更改serialVersionUID?

java serialization

48
推荐指数
4
解决办法
2万
查看次数

在java中将任何对象转换为字节数组

我有一个X类型的对象,我希望在将它发送到S3存储之前将其转换为字节数组.谁能告诉我怎么做?我感谢您的帮助.

java serialization bytearray

48
推荐指数
3
解决办法
14万
查看次数

意外类型 - 序列化异常

我有一个WCF服务.

正常操作会看到服务器正在进行一些处理,通过回调将填充的XactTaskIn对象返回给客户端.我有这个工作正常.

我的问题是,当我尝试将returnData变量设置为填充的XactException并尝试通过回调将XactTaskIn发送回客户端时,我会抛出以下异常.

异常 - 不要求"数据协定名称为'XactException:http://schemas.datacontract.org/2004/07/'的类型'XactException'.请考虑使用DataContractResolver或将已知类型静态未知的任何类型添加到已知类型列表中 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中." (System.Runtime.Serialization.SerializationException)异常消息="类型'XactException',数据协定名称为'XactException:http://schemas.datacontract.org/2004/07/'不是预期的.考虑使用DataContractResolver或添加任何静态地知道已知类型列表的类型 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表.",Exception Type ="System.Runtime.Serialization.SerializationException"

这是XactTaskIn类

[DataContract]
public class XactTaskIn
{
    [DataMember]
    public DateTime timeOut;
    [DataMember]
    public DateTime timeIn;
    [DataMember]
    public string name;
    [DataMember]
    public string responseTo;
    [DataMember]
    public String moduleFromName;
    [DataMember]
    public String moduleFromType;
    [DataMember]
    public String methodFromName;
    [DataMember]
    public object[] originalInputs;
    [DataMember]
    public String returnMethodToCall;
    [DataMember]
    public String returnModuleToCall;
    [DataMember]
    public object returnData;

    public XactTaskIn(DateTime timeOut, DateTime timeIn, string name, string responseTo, String moduleFromName, String moduleFromType, String methodFromName, object[] originalInputs, …
Run Code Online (Sandbox Code Playgroud)

.net c# wcf serialization exception-handling

48
推荐指数
1
解决办法
6万
查看次数

哪个是Java序列化的最佳替代方案?

我目前正在开发一个项目,它需要持久保存任何类型的对象(我们没有任何控制权的实现),因此这些对象可以在之后恢复.

我们无法实现ORM,因为我们无法在开发时限制库的用户.

我们的第一个选择是使用Java默认序列化对其进行序列化,但是当用户开始传递同一对象的不同版本(属性更改类型,名称等)时,我们在恢复对象时遇到了很多麻烦.

我们尝试过使用XMLEncoder类(将对象转换为XML),但我们发现缺少功能(例如,不支持Enums).

最后,我们还尝试了JAXB,但这会强制我们的用户注释他们的类.

还有什么好办法吗

java serialization xml-serialization

47
推荐指数
7
解决办法
4万
查看次数

EF 4.1 - 代码优先 - JSON循环参考序列化错误

我得到一个循环引用序列化错误,但据我所知,我没有任何循环引用.我正在从数据库中检索一组订单并将它们作为JSON发送到客户端.所有代码如下所示.

这是错误:

错误

序列化"System.Data.Entity.DynamicProxies.Order_83CECF2AA4DE38232F9077D4B26941AB96BC61230419EA8AC42C9100E6072812"类型的对象时检测到循环引用.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.InvalidOperationException:序列化"System.Data.Entity.DynamicProxies.Order_83CECF2AA4DE38232F9077D4B26941AB96BC61230419EA8AC42C9100E6072812"类型的对象时检测到循环引用.

来源错误:

在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

我的课程如下:

订购

public class Order
{
    [Key]
    public int OrderId { get; set; }

    public int PatientId { get; set; }
    public virtual Patient Patient { get; set; }

    public int CertificationPeriodId { get; set; }
    public virtual CertificationPeriod CertificationPeriod { get; set; }

    public int AgencyId { get; set; }
    public virtual Agency Agency { get; set; }

    public int PrimaryDiagnosisId { get; set; }
    public virtual Diagnosis PrimaryDiagnosis { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# serialization json entity-framework asp.net-mvc-3

47
推荐指数
6
解决办法
5万
查看次数

PHP中的Serialize或json?

所以我需要在PHP中对数组进行编码并将其以纯文本形式存储在MySQL数据库中,我的问题是我应该使用serialize()还是json_encode()?每个人的优点和缺点是什么?

我认为他们中的任何一个都会在这种情况下做.但是你更喜欢哪一个?为什么?如果它不是数组的东西?

php serialization json

46
推荐指数
4
解决办法
4万
查看次数

在JSON.NET中序列化null

通过JSON.NET序列化任意数据时,任何null属性都将写入JSON

"propertyName":null

当然,这是正确的.

但是我要求自动将所有空值转换为默认的空值,例如null strings应该变为String.Emptynull,int?s应该变为0null,bool?s应该是false,等等.

NullValueHandling没有帮助,因为我不想Ignore空,但我也不想要Include它们(嗯,新功能?).

所以我转向实施自定义JsonConverter.
虽然实现本身是轻而易举的,但不幸的是,这仍然CanConvert()无法工作 - 永远不会调用具有null值的属性,因此WriteJson()也不会调用它.显然空值会自动序列化null,而不需要自定义管道.

例如,以下是空字符串的自定义转换器示例:

public class StringConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return typeof(string).IsAssignableFrom(objectType);
    }

    ...
    public override void WriteJson(JsonWriter writer, 
                object value, 
                JsonSerializer serializer)
    {
        string strValue = value as string;

        if (strValue == null)
        {
            writer.WriteValue(String.Empty);
        }
        else
        {
            writer.WriteValue(strValue);
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

.net c# serialization json.net

46
推荐指数
1
解决办法
4万
查看次数

使用活动记录搜索序列化数据

我正在尝试对序列化列进行简单查询,你是如何做到这一点的?

serialize :mycode, Array


1.9.3p125 :026 > MyModel.find(104).mycode
  MyModel Load (0.6ms)  SELECT `mymodels`.* FROM `mymodels` WHERE `mymodels`.`id` = 104 LIMIT 1
 => [43565, 43402] 
1.9.3p125 :027 > MyModel.find_all_by_mycode("[43402]")
  MyModel Load (0.7ms)  SELECT `mymodels`.* FROM `mymodels` WHERE `mymodels`.`mycode` = '[43402]'
 => [] 
1.9.3p125 :028 > MyModel.find_all_by_mycode(43402)
  MyModel Load (1.2ms)  SELECT `mymodels`.* FROM `mymodels` WHERE `mymodels`.`mycode` = 43402
 => [] 
1.9.3p125 :029 > MyModel.find_all_by_mycode([43565, 43402])
  MyModel Load (1.1ms)  SELECT `mymodels`.* FROM `mymodels` WHERE `mymodels`.`mycode` IN (43565, 43402)
 => [] 
Run Code Online (Sandbox Code Playgroud)

search serialization activerecord ruby-on-rails

46
推荐指数
6
解决办法
3万
查看次数