protostuff 是一个支持各种格式的一个序列化Java类库,包括 JSON、XML、YAML等格式。
示例代码:
public class UserSchema implements Schema<User> { public boolean isInitialized(User user) { return user.getEmail() != null; } public void mergeFrom(Input input, User user) throws IOException { while(true) { int number = input.readFieldNumber(this); switch(number) { case 0: return; case 1: user.setEmail(input.readString()); break; case 2: user.setFirstName(input.readString()); break; case 3: user.setLastName(input.readString()); break; case 4: if(message.friends == null) message.friends = new ArrayList<User>(); message.friends.add(input.mergeObject(null, this)); break; default: input.handleUnknownField(number, this); } } } public void writeTo(Output output, User user) throws IOException { if(user.getEmail() == null) throw new UninitializedMessageException(user, this); output.writeString(1, user.getEmail(), false); if(user.getFirstName() != null) output.writeString(2, user.getFirstName(), false); if(user.getLastName() != null) output.writeString(3, user.getLastName(), false); if(message.friends != null) { for(User friend : message.friends) { if(friend != null) output.writeObject(4, friend, this, true); } } } public User newMessage() { return new User(); } public Class<User> typeClass() { return User.class; } public String messageName() { return User.class.getSimpleName(); } public String messageFullName() { return User.class.getName(); } // the mapping between the field names to the field numbers. public String getFieldName(int number) { switch(number) { case 1: return "email"; case 2: return "firstName"; case 3: return "lastName"; case 4: return "friends"; default: return null; } } public int getFieldNumber(String name) { Integer number = fieldMap.get(name); return number == null ? 0 : number.intValue(); } private static final HashMap<String,Integer> fieldMap = new HashMap<String,Integer>(); static { fieldMap.put("email", 1); fieldMap.put("firstName", 2); fieldMap.put("lastName", 3); fieldMap.put("friends", 4); } }
Protostuff详解 作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 一、Protostuff介绍 Protostuff是一个开源的、基于Java语言的序列化库,它内建支持向前向后兼容(模式演进)和验证功能。 Protostuff支持的序列化格式包括: protobuf protostuff graph 即序列化对
初探Protostuff的使用 最近在学习RPC,看到了一个叫做Protostuff的库,是基于谷歌Protocal Buffer的序列化库,之前了解过Protocol Buffer,对学习了一些资料后,写了个demo,记录下来。 什么是Protocol Buffer? Protocol Buffer是谷歌出品的一种数据交换格式,独立于语言和平台,类似于json。Google提供了多种语言的实现:
一、Protostuff介绍 Protostuff是一个开源的、基于Java语言的序列化库,它内建支持向前向后兼容(模式演进)和验证功能。 A java serialization library with built-in support for forward-backward compatibility (schema evolution) and validation. efficient
软件简介 protostuff 是一个支持各种格式的一个序列化Java类库,包括 JSON、XML、YAML等格式。 示例代码: public class UserSchema implements Schema { public boolean isInitialized(User user) { return user.getEmail() != null; } public void mer
google开发的开源的序列化方案protocol buffer(简称protobuf),它的好处很多,独立于语言,独立于平台,最最重要的是它的效率相当高,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一。 protostuff是一个基于protobuf实现的序列化方法,它较于protobuf最明显的好处是,在几乎不损耗性能的情况下做到了不
了解Protocol Buffer 首先要知道什么是Protocol Buffer,在编程过程中,当涉及数据交换时,我们往往需要将对象进行序列化然后再传输。常见的序列化的格式有JSON,XML等,这些格式虽然可读性较好,但占用的空间大小并不是最优的。基于此,Google创建了一种名叫Protocol Buffer的序列化格式,它与JSON,XML相比可读性较差,但占用的空间也会更小,在一些对于速度
我有一门课是这样的: 但是当我试图序列化它时,我收到一个错误,上面写着“试图序列化java.lang.class:java.lang.字符串。忘记注册一个类型适配器了吗?”。所以我创建了这个适配器: } 并登记如下: 但我还是犯了同样的错误<我做错了什么 适配器的实现看起来正常吗?
我也读 类、函数和方法不能pickle--如果您pickle,则对象的类不pickle,只是标识它属于什么类的字符串。 那么,这是否意味着这些类不能被序列化? 现在它是如何最终被称为 引发异常的
问题内容: 我在android / java中对Location的子类进行序列化遇到了麻烦 位置不可序列化。我有一个名为FALocation的第一个子类,它没有任何实例变量。我已经宣布它可序列化。 然后,我有一个名为Waypoint的第二个类,看起来像这样: 序列化工作正常。 反序列化会产生跟随翼异常(腿对象包含一个航路点): 问题答案: 序列化位置绝对必要吗?也许您可以将其标记为瞬态,并在反序列
本文向大家介绍Python pickle类库介绍(对象序列化和反序列化),包括了Python pickle类库介绍(对象序列化和反序列化)的使用技巧和注意事项,需要的朋友参考一下 一、pickle pickle模块用来实现python对象的序列化和反序列化。通常地pickle将python对象序列化为二进制流或文件。 python对象与文件之间的序列化和反序列化: 如果要实现python对象和
如果类B扩展了类A,则类B实现可序列化,而类A有一个不可序列化的公共非静态初始化变量。。。尝试使用FileOutputStream的writeObject()方法写入类“B”对象时,将序列化从a继承的不可序列化成员,以便将其与类B的其余变量一起写入文件,还是将引发NotSerializableException?我试过了,效果不错,但我不知道为什么。。。所以我不确定它是否总是有效,或者我错过了什么
主要内容:嵌套内部类示例,嵌套的静态内部类示例在本章中,我们将解释具有内部类的类的序列化/反序列化。 嵌套内部类示例 参考以下示例代码片段 - 示例 让我们来看看一个内部类的序列化/反序列化。 创建一个名为的Java类文件:GsonTester.java - 执行上面示例代码,得到以下结果 - 嵌套的静态内部类示例 参考以下代码实现 - 示例 我们来看一个实例,其中包含一个静态内部类的序列化/反序列化。 创建一个名为的Java类文件:Gson
在下面的示例中,我有一个主类-A和它的子类-B。两者都可以用作一般类X中的属性。 如何使用Jackson多态特性将以下给定的json正确反序列化为各自的类: JSON A: JSON B: 预期结果:将keys对象映射到JSON A的类A和JSON B的类B。 请提出其他建议。
我正在尝试使用kryo序列化和反序列化到二进制。我想我已经完成了序列化,但似乎无法反序列化。下面是我正在处理的代码,但最终我想存储一个字节[],然后再次读取它。文档只显示了如何使用文件。