Java序列化类库protostuff.zip

时间:2022-08-05 22:10:00
【文件属性】:

文件名称: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


网友评论