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


相关推荐

  • Timus 1796. Amusement Park 聪明题[通俗易懂]

    Timus 1796. Amusement Park 聪明题

    2022年1月30日
    59
  • OpenProcessToken这个函数用法[通俗易懂]

    OpenProcessToken这个函数用法[通俗易懂] GetCurrentProcessID得到当前进程的IDOpenProcessToken得到进程的令牌句柄LookupPrivilegeValue查询进程的权限AdjustTokenPrivileges调整令牌权限要对一个任意进程(包括系统安全进程和服务进程)进行指定了写相关的访问权的OpenProcess操作,只要当前进程具有SeDeDebug权限就可以了。要是一个用户是Admi

    2022年6月25日
    25
  • ElasticSearch搜索引擎常见面试题总结

    ElasticSearch搜索引擎常见面试题总结

    2021年10月5日
    41
  • ${sessionScope.user}的使用方法

    EL 全名为ExpressionLanguageEL 语法很简单,它最大的特点就是使用上很方便。接下来介绍EL主要的语法结构:${sessionScope.user.sex}所有EL都是以${为起始、以}为结尾的。上述EL范例的意思是:从Session的范围中,取得用户的性别。假若依照之前JSPScriptlet的写法如下:Useruser=(Us

    2022年4月4日
    57
  • speedup scaleup sizeup

    speedup scaleup sizeup并行算法通常包含三种评价的方法,用来评价算法各方面的优劣。1.speedup评测speedup的方法是,保持数据不变,增加计算机的数目。计算机数目为m时的speedup计算方法如下:speedup(m)=在一台机器上面使用的时间/在m台机器上面使用的时间。该评测指标,如果能够随着m保持一个线性的增长,则表示,多台机器能够很好的缩短所需时间。然而,线性的s

    2025年8月4日
    3
  • 可赎回债券「建议收藏」

    可赎回债券「建议收藏」可赎回债券的价格可赎回债券(callablebonds):发行人有权赎回的债券。为什么发行可赎回债券?通常有赎回保护期(callprotectionperiod),有相对较高的收益率补偿赎

    2022年8月4日
    7

发表回复

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

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