Tag: 序列化

Serializable是什么意思?

Java在Java中是什么意思呢? 或者一般来说,对于这个问题…

.NET中快速而紧凑的对象序列化

我想使用对象序列化在Mono服务器和Silverlight客户端之间通过networking进行通信。 因为服务器将要托pipe多个实时游戏,所以序列化非常节省空间并且相当快。 我应该使用什么技术? BinaryFormatter为序列化的类(版本,文化,类名称,属性名称等)添加了大量的开销,这在此应用程序中是不需要的。 我能做些什么来提高这个空间的效率?

什么是什么时候应该使用它?

我发现有些类使用[Serializable]属性。 它是什么? 我应该什么时候使用它? 我会得到什么样的好处?

Java自定义序列化

我有一个对象,其中包含我想序列化一些不可序列化的字段。 他们来自一个单独的API,我不能改变,所以使他们可序列化是不是一个选项。 主要的问题是Location类。 它包含四个我可以序列化的东西,所有的整数。 我如何使用read / writeObject来创build一个自定义的序列化方法,可以这样做: // writeObject: List<Integer> loc = new ArrayList<Integer>(); loc.add(location.x); loc.add(location.y); loc.add(location.z); loc.add(location.uid); // … serialization code // readObject: List<Integer> loc = deserialize(); // Replace with real deserialization location = new Location(loc.get(0), loc.get(1), loc.get(2), loc.get(3)); // … more code 我该怎么做?

使用常规编码器使对象JSON可序列化

JSON序列化自定义不可序列化对象的常规方法是json.JSONEncoder ,然后将自定义编码器传递给转储。 它通常是这样的: class CustomEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, foo): return obj.to_json() return json.JSONEncoder.default(self, obj) print json.dumps(obj, cls = CustomEncoder) 我想要做的是使用默认的编码器可序列化的东西。 我环顾四周,却找不到任何东西。 我的想法是,编码器会查看一些字段来确定json编码。 类似于__str__ 。 也许是一个__json__字段。 在Python中有这样的东西吗? 我想使我所做的一个模块类成为JSON可序列化给使用该包的每个人,而不用担心自己实现自己的[自定义]自定义编码器。

如何在C ++中实现序列化

每当我发现自己需要在C ++程序中序列化对象时,就会回到这种模式: class Serializable { public: static Serializable *deserialize(istream &is) { int id; is >> id; switch(id) { case EXAMPLE_ID: return new ExampleClass(is); //… } } void serialize(ostream &os) { os << getClassID(); serializeMe(os); } protected: int getClassID()=0; void serializeMe(ostream &os)=0; }; 上述工作在实践中相当好。 不过,我听说这种类ID的切换是邪恶的,也是反模式的。 在C ++中处理序列化的OO方式是什么标准?

我如何PHP序列化一个jQuery序列化的forms?

使用$('#form').serialize() ,我能够发送到一个PHP页面。 现在我如何在PHP中反序列化它? 它在jQuery中被序列化。

JavaScriptSerializer期间ASP.NET MVC中的MaxJsonLengthexception

在我的一个控制器动作中,我返回一个非常大的JsonResult来填充网格。 我收到以下InvalidOperationExceptionexception: 在使用JSON JavaScriptSerializer进行序列化或反序列化时出错。 string的长度超过maxJsonLength属性中设置的值。 不幸的是,将web.config的maxJsonLength属性设置为更高的值并不会显示任何效果。 <system.web.extensions> <scripting> <webServices> <jsonSerialization maxJsonLength="2147483644"/> </webServices> </scripting> </system.web.extensions> 我不想把它作为一个string,就像在这个答案中提到的那样。 在我的研究中,我遇到了这个博客文章,写一个自己的ActionResult (例如LargeJsonResult : JsonResult )被推荐来绕过这个行为。 这是唯一的解决scheme吗? 这是ASP.NET MVC中的错误? 我错过了什么吗? 任何帮助将不胜感激。

如何JSON序列化集?

我有一个Python set ,其中包含__hash__和__eq__方法的对象,以便确保集合中不包含重复项。 我需要json对这个结果set进行编码,但是将一个空set传递给json.dumps方法会引发一个TypeError 。 File "/usr/lib/python2.7/json/encoder.py", line 201, in encode chunks = self.iterencode(o, _one_shot=True) File "/usr/lib/python2.7/json/encoder.py", line 264, in iterencode return _iterencode(o, 0) File "/usr/lib/python2.7/json/encoder.py", line 178, in default raise TypeError(repr(o) + " is not JSON serializable") TypeError: set([]) is not JSON serializable 我知道我可以创build一个具有自定义default方法的json.JSONEncoder类的扩展,但我甚至不知道从哪里开始转换set 。 我应该在默认方法中的set值之外创build一个字典,然后返回编码? 理想情况下,我想使默认的方法能够处理所有原始的编码器扼stream器上的数据types(我使用Mongo作为数据源,所以date似乎也引发这个错误) 任何提示正确的方向将不胜感激。 编辑: 感谢你的回答! 也许我应该更精确。 我利用(和upvoted)在这里的答案来解决被翻译的set的局限性,但也有内部的关键是一个问题。 集合中的对象是转化为__dict__复杂对象,但是它们本身也可以包含其属性的值,这些属性可能不适用于json编码器中的基本types。 有很多不同的types进入这个set […]

什么是正确的方式来使一个自定义的.NETexception序列化?

更具体地说,当exception包含可能或不可以序列化的自定义对象时。 以这个例子: public class MyException : Exception { private readonly string resourceName; private readonly IList<string> validationErrors; public MyException(string resourceName, IList<string> validationErrors) { this.resourceName = resourceName; this.validationErrors = validationErrors; } public string ResourceName { get { return this.resourceName; } } public IList<string> ValidationErrors { get { return this.validationErrors; } } } 如果这个exception被序列化和反序列化,那么这两个自定义属性( ResourceName和ValidationErrors )将不会被保留。 该属性将返回null 。 […]