【文件属性】:
文件名称:Java序列化类库protostuff.zip
文件大小:884KB
文件格式:ZIP
更新时间:2022-08-05 22:10:00
开源项目
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);
}
}
标签:protostuff