protostuff Java序列化类库开源项目

我要开发同款
匿名用户2010年11月01日
70阅读

技术信息

开源地址
https://github.com/brockwell/ucommon
授权协议
Apache

作品详情

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

示例代码:

public class UserSchema implemets Schema<User>{    public boolea isIitialized(User user)    {        retur user.getEmail() != ull;    }    public void mergeFrom(Iput iput, User user) throws IOExceptio    {        while(true)        {            it umber = iput.readFieldNumber(this);            switch(umber)            {                case 0:                    retur;                case 1:                    user.setEmail(iput.readStrig());                    break;                case 2:                    user.setFirstName(iput.readStrig());                    break;                case 3:                    user.setLastName(iput.readStrig());                    break;                case 4:                    if(message.frieds == ull)                        message.frieds = ew ArrayList<User>();                    message.frieds.add(iput.mergeObject(ull, this));                    break;                default:                    iput.hadleUkowField(umber, this);            }        }    }    public void writeTo(Output output, User user) throws IOExceptio    {        if(user.getEmail() == ull)            throw ew UiitializedMessageExceptio(user, this);        output.writeStrig(1, user.getEmail(), false);        if(user.getFirstName() != ull)            output.writeStrig(2, user.getFirstName(), false);        if(user.getLastName() != ull)            output.writeStrig(3, user.getLastName(), false);        if(message.frieds != ull)        {            for(User fried : message.frieds)            {                if(fried != ull)                    output.writeObject(4, fried, this, true);            }        }    }    public User ewMessage()    {        retur ew User();    }    public Class<User> typeClass()    {        retur User.class;    }    public Strig messageName()    {        retur User.class.getSimpleName();    }    public Strig messageFullName()    {        retur User.class.getName();    }    // the mappig betwee the field ames to the field umbers.    public Strig getFieldName(it umber)    {        switch(umber)        {            case 1:                retur "email";            case 2:                retur "firstName";            case 3:                retur "lastName";            case 4:                retur "frieds";            default:                retur ull;        }    }    public it getFieldNumber(Strig ame)    {        Iteger umber = fieldMap.get(ame);        retur umber == ull ? 0 : umber.itValue();    }    private static fial HashMap<Strig,Iteger> fieldMap = ew HashMap<Strig,Iteger>();        static    {        fieldMap.put("email", 1);        fieldMap.put("firstName", 2);        fieldMap.put("lastName", 3);        fieldMap.put("frieds", 4);    }}

功能介绍

protostuff 是一个支持各种格式的一个序列化Java类库,包括 JSON、XML、YAML等格式。 示例代码: public class UserSchema implements Sc...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论