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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 我的github今天大手笔分享,welcome——fork

    我的github今天大手笔分享,welcome——fork

    2021年9月9日
  • 【Ubuntu安装 Nginx】「建议收藏」

    【Ubuntu安装 Nginx】「建议收藏」ubuntu安装nginx目前支持两种安装方式,一种是apt-get的方式,另一种是根据包安装的方式为方便我统一使用root用户一、apt-get安装nginx切换至root用户sudosurootapt-getinstallnginx如果安装时遇到这种情况,就输入sudoaptupdate在重新输入安装命令即可。查看nginx是否安装成功nginx-v启动nginxservicenginxstart启动后,在网页重输入ip地址,即可看到nginx的欢

    2022年9月19日
  • 如何用python刷屏_利用python实现在微信群刷屏的方法[通俗易懂]

    hello,我是小小炽,这是我写的第一篇博客,写博客一直都想在写,但是苦于能力尚浅,在各位大牛面前那既然是关公面前耍大刀了,但是其实想来每一个大牛不也是从一个小白慢慢进步学习从而达到一定的高度的吗,而且写博客的意义但不在于炫耀你的成果,而在于分享,听取他人的建议,互相学习,因此我下定决心,每天写一篇博客,不管是小项目还是学习笔记,至少坚持下来,我想一定会有所收获的。好,废话不多说,今天我写的是如何…

    2022年4月15日
  • Dynamips模拟3660桥接PC后与实际网络通讯问题

    Dynamips模拟3660桥接PC后与实际网络通讯问题

    2021年7月26日
  • linux命令查看所有进程_获取当前进程句柄

    linux命令查看所有进程_获取当前进程句柄查看系统默认的最大文件句柄数,系统默认是1024#ulimit-n1024查看当前进程打开了多少句柄数#lsof-n|awk‘{print$2}’|sort|uniq-c|sort-nr|more13124204 5724244  5724231  …其中第一列是打开的句柄数,第二列是进程ID。可以根据ID号来查看进程名。#psaef|grep24204…

    2022年10月17日
  • sstream相关用法

    sstream相关用法 ①将数字转换为字符串       ②字符串转换为数字输入1234,输出1234输入123456分别输出12,34,56③把一行字符串放入流中,单词以空格隔开。之后把一个个单词从流中依次读取到字符串…

    2022年6月4日

发表回复

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

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