protostuff Java序列化类库开源项目

我要开发同款
匿名用户2010年11月01日
34阅读
开发技术Java
所属分类程序开发、常用工具包
授权协议Apache

作品详情

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

示例代码:

public class UserSchema implements Schema<User>{    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<User>();                    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<User> 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<String,Integer> fieldMap = new HashMap<String,Integer>();        static    {        fieldMap.put("email", 1);        fieldMap.put("firstName", 2);        fieldMap.put("lastName", 3);        fieldMap.put("friends", 4);    }}
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论