Java序列化类库protostuff.zip
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
- 1
- 2
- 3
- 4
- 5
- 粉丝: 448
- 资源: 1万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 国开-网络操作系统管理-理解常用的网络性能测量指标,掌握使用ping和tracert命令判断网络故障和跟踪路由器.doc
- 国开-网络操作系统管理-理解数据备份的概念-掌握使用Windows-Server-Backup备份和恢复数据。.docx
- 国开-网络操作系统管理-理解网络测量的目的,掌握常用的网络测量工具.doc
- 国开-网络操作系统管理-理解上网行为管理软件的功能.doc
- 国开-网络操作系统管理-理解计算机病毒防范的常用方法-掌握安装和配置防病毒软件。.doc
- 国开-网络操作系统管理-理解网络计费的数据采集方式.doc
- 基于 AT89C51 单片机的电梯显示面板设计全部资料+详细文档+源码.zip
- 基于 LGT8Fx8P 与 ATMEGAx8PB 系列单片机的 Arduino Uno 开发板全部资料+详细文档+源码.zip
- 基于 C51 单片机设计的温度检测报警系统全部资料+详细文档+源码.zip
- 基于51单片机-DS18B20,实时显示温度全部资料+详细文档+源码.zip
- 基于51单片机 444三色光立方演示程序全部资料+详细文档+源码.zip
- 基于51单片机(STC89C52)和指纹识别模块(AS608)的指纹锁项目的全部软硬件资料全部资料+详细文档+源码.zip
- 基于51单片机LCD1602显示的一个万年历+可调时钟全部资料+详细文档+源码.zip
- 基于51单片机Y33 4轮智能小车例程全部资料+详细文档+源码.zip
- 基于51单片机步进电机正弦控制全部资料+详细文档+源码.zip
- 基于51单片机的C语言电子时钟设计全部资料+详细文档+源码.zip