Questions tagged «serialization»

序列化是将数据结构转换为易于存储或传输并随后进行重构的格式的过程。

5
Json.NET可以序列化到流或从流反序列化吗?
我听说Json.NET比DataContractJsonSerializer更快,并想尝试一下... 但是我在JsonConvert上找不到任何采用流而不是字符串的方法。 例如,对于在WinPhone上反序列化包含JSON的文件,我使用以下代码将文件内容读取为字符串,然后反序列化为JSON。在我的(非常临时)测试中,它似乎比使用DataContractJsonSerializer直接从流中反序列化要慢大约4倍... // DCJS DataContractJsonSerializer dc = new DataContractJsonSerializer(typeof(Constants)); Constants constants = (Constants)dc.ReadObject(stream); // JSON.NET string json = new StreamReader(stream).ReadToEnd(); Constants constants = JsonConvert.DeserializeObject<Constants>(json); 我做错了吗?

14
JPA实体何时以及为何应实现Serializable接口?
问题在标题中。下面我仅描述了我的一些想法和发现。 当我有一个非常简单的域模型(3个表没有任何关系)时,我所有的实体都没有实现Serializable。 但是,当域模型变得更加复杂时,我遇到了RuntimeException,它表示我的一个实体没有实现Serializable。 我使用Hibernate作为JPA实现。 我想知道: 它是特定于供应商的要求/行为吗? 我的可序列化实体会怎样?它们应该可序列化以存储或传输吗? 在什么时候有必要使我的实体可序列化?

13
如何将对象序列化为字符串
我能够将一个对象序列化为一个文件,然后再次还原它,如下面的代码片段所示。我想将对象序列化为字符串并存储到数据库中。谁能帮我? LinkedList<Diff_match_patch.Patch> patches = // whatever... FileOutputStream fileStream = new FileOutputStream("foo.ser"); ObjectOutputStream os = new ObjectOutputStream(fileStream); os.writeObject(patches1); os.close(); FileInputStream fileInputStream = new FileInputStream("foo.ser"); ObjectInputStream oInputStream = new ObjectInputStream(fileInputStream); Object one = oInputStream.readObject(); LinkedList<Diff_match_patch.Patch> patches3 = (LinkedList<Diff_match_patch.Patch>) one; os.close();


8
如何对集合进行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 我知道我可以为json.JSONEncoder具有自定义default方法的类创建扩展,但是我什至不知道从哪里开始转换set。是否应该set使用默认方法中的值创建字典,然后返回该方法的编码?理想情况下,我想使默认方法能够处理原始编码器阻塞的所有数据类型(我将Mongo用作数据源,因此日期似乎也引发了此错误) 正确方向的任何提示将不胜感激。 编辑: 感谢你的回答!也许我应该更精确一些。 我利用(并赞成)这里的答案来解决set翻译的局限性,但是内部键也是一个问题。 中的set对象是转换为的复杂对象__dict__,但它们本身也可以包含其属性值,这些值可能不符合json编码器中的基本类型。 涉及到很多不同的类型set,并且哈希基本上为实体计算了唯一的ID,但是按照NoSQL的真正精神,没有确切说明子对象包含什么。 一个对象可能包含的日期值starts,而另一个对象可能具有一些其他模式,该模式不包含包含“非原始”对象的键。 …

10
序列化包含Dictionary成员的类
扩展之前的问题,我决定对配置文件类进行反序列化,该类非常有用。 我现在想存储的驱动器号关联数组映射(关键是驱动器盘符,价值是网络路径)和使用都试过Dictionary,HybridDictionary和Hashtable这个,但是打电话时,我总是得到下面的错误ConfigFile.Load()或者ConfigFile.Save(): 反映类型'App.ConfigFile'的错误。[snip] System.NotSupportedException:无法序列化成员App.Configfile.mappedDrives [snip] 从我看过的书中可以将Dictionary和HashTables序列化,那么我在做什么错呢? [XmlRoot(ElementName="Config")] public class ConfigFile { public String guiPath { get; set; } public string configPath { get; set; } public Dictionary<string, string> mappedDrives = new Dictionary<string, string>(); public Boolean Save(String filename) { using(var filestream = File.Open(filename, FileMode.OpenOrCreate,FileAccess.ReadWrite)) { try { var serializer = new …


6
在Python中将字符串转换为Enum
我想知道将字符串转换(反序列化)为Python的Enum类的正确方法是什么。似乎可以getattr(YourEnumType, str)完成这项工作,但是我不确定它是否足够安全。 更具体地说,我想像这样将'debug'字符串转换为Enum对象: class BuildType(Enum): debug = 200 release = 400


6
性能实体序列化:BSON与MessagePack(对比JSON)
最近,我找到了MessagePack,它是Google 协议缓冲区和JSON的另一种二进制序列化格式,它的性能也优于两者。 另外,MongoDB还使用了BSON序列化格式来存储数据。 有人可以详细说明BSON与MessagePack的区别和缺点吗? 只是为了完成高性能二进制序列化格式的列表:还有Gob ,它们将成为Google的Protocol Buffers的后继产品。但是,与所有其他提到的格式相反,这些格式不是语言不可知的,并且依赖于Go的内置反射,此外还有Gobs库,至少可以使用除Go之外的其他语言。


3
使用Rails序列化将哈希保存到数据库
我尝试将哈希映射ID保存到Rails应用程序中的许多尝试中。我迁移到数据库以容纳此新列: class AddMultiWrongToUser < ActiveRecord::Migration def self.up add_column :users, :multi_wrong, :string end def self.down remove_column :users, :multi_wrong end end 在我的模型中,我有: class User < ActiveRecord::Base serialize :multi_wrong, Hash end 但是,当我使用Rails控制台通过以下操作进行测试时: user = User.create() user.multi_wrong = {"test"=>"123"} user.save 输出为假。这是怎么了


5
从字符串反序列化TextReader
我想从以下位置更改代码: string path = @"c:\Directory\test.xml"; XmlSerializer s = new XmlSerializer(typeof(Car)); TextReader r = new StreamReader(path); Car car = (Car)s.Deserialize(r); r.Close(); 转换为将XML转换为字符串,然后将字符串转换为对象Car的代码。 这可能吗?
135 c#  xml  serialization 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.