protostuff java_protostuff

protostuff java_protostuff软件简介protostuff是一个支持各种格式的一个序列化Java类库,包括JSON、XML、YAML等格式。示例代码:publicclassUserSchemaimplementsSchema{publicbooleanisInitialized(Useruser){returnuser.getEmail()!=null;}publicvoidmergeFrom(In…

大家好,又见面了,我是你们的朋友全栈君。

软件简介

protostuff 是一个支持各种格式的一个序列化Java类库,包括 JSON、XML、YAML等格式。

示例代码:

public class UserSchema implements Schema

{

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();

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 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 fieldMap = new HashMap();

static

{

fieldMap.put(“email”, 1);

fieldMap.put(“firstName”, 2);

fieldMap.put(“lastName”, 3);

fieldMap.put(“friends”, 4);

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133738.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Xmpp学习之Android-smack入门指导

    Xmpp学习之Android-smack入门指导Xmpp学习之Androidsmack入门指导版权声明:本文为博主原创文章,未经博主允许不得转载。转载请表明出处:http://www.cnblogs.com/cavalier/p/69404

    2022年8月2日
    8
  • stat函数使用

    stat函数使用要点 通过 stat 函数获取文件属性代码示例 运行结果 a outa outatime mtime ctime a outxyz outErroroccu

    2025年7月31日
    5
  • js在数组添加数据[通俗易懂]

    js在数组添加数据[通俗易懂]在数组最前面添加元素arr.unshift()在数组后面添加元素arr.push()vararr=[1,2,3]arr.unshift(1)console.log(arr)//1,1,2,3——————————–vararr=[1,2,3]arr.push(1)console.log(arr)//1,2,3,1

    2022年4月28日
    91
  • Latex中插图总结(一)

    Latex中插图总结(一)写在前面的话CSDN中的数据库保存是不是有问题,我之前写了很多的,存在草稿箱里的最后竟然没有在了。真是郁闷死个人。亏我写了这么多,以后写完要保存了。泪目。Latex的插图在Latex中使用插图一般有两种方式,一种是插入事先准备好的图片,另一种是使用Latex代码直接在文档中画图。我们一般常见的使用都是第一种,准备好图片,然后直接插入在我们文档当中。只有一些特殊情况需要用大量代码作图。插图功能不是有L

    2022年6月10日
    45
  • Mysql数据库备份策略

    Mysql数据库备份策略Mysql数据库备份策略我的petstore所用的数据库是Mysql。Mysql的数据库备份不象那些企业界数据库那样完善,分为完全备份、差分备份以及日记纪录等等。Mysql备份数据库两个主要方法是用mysqldump程序或直接拷贝数据库文件。mysqldump与MySQL服务器协同操作。直接拷贝方法在服务器外部进行,并且你必须采取措施保证没有客户正在修改你将拷贝的表。如果你想用文件系统备份来备份数

    2022年5月2日
    46
  • SQL server2019安装教程[通俗易懂]

    下载必备由于安装文件太大,所以没有办法上传,各位就请自行下载安装步骤点击sql2019安装包选择基本浏览安装到指定的位置,点击安装下载下载完成之后就是这个界面,然后点击自定义选择下一步等待扫描完成后选择选择下一步之后再选择第一个“执行SQLSERVER2019的全新安装”,然后点击下一步勾选第一个接受条款,继续下一步在“实例功能”里面勾选你需要…

    2022年4月7日
    64

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号