代码之家  ›  专栏  ›  技术社区  ›  Trick

jibx绑定-根对象扩展对象

  •  1
  • Trick  · 技术社区  · 15 年前

    甚至可以用超级字段绑定根对象吗?

    我有相当复杂的实体(实体)要绑定。我已经迷路了:)

    这是我的代码情况:

    public class CoreRestWrapper {
        private Integer page;
        private Integer perPage;
    }
    
    public class UserWrapper extends CoreRestWrapper {
        private Collection<UserCVO> users;
    }
    
    public class UserCVO  {
        private UserVO userVO;
        private Map<String, UserMeta> meta;
    }
    
    public class UserVO extends BaseVO {
        //nothing here
    }
    
    public class BaseVO {
        private Integer id;
        private String mainName;
    }
    
    public class UserMeta extends Meta {
        //nothing here
    }
    
    public class Meta {
        private String key;
        private Object value;
        private String type; //String, Integer, Boolean, Date
    }
    

    UserWrapper是我的根对象。我希望我的响应XML如下所示:

    <users>
        <page>1</page>
        <perPage>2</perPage>
        <user>
            <id>1</id>
            <main>test</main>
            <meta type="String" key="wtf">just for fun</meta>
            <meta type="Integer" key="age">99</meta>
        </user>
        <user>
            <id>2</id>
            <main>test</main>
            <meta type="String" key="wtf">fooooo</meta>
            <meta type="Integer" key="age">101</meta>
        </user>
    </users>
    

    或者甚至 <users page="1" perPage="2"> 然后只是用户标签…

    这是否可能(对于JiBX的初学者来说)?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Chris Kessel    15 年前

    可以,但必须为层次结构中的所有内容定义映射。我也遇到了同样的事情。结果非常复杂,我发现只需创建一个要映射到的jibx包装器对象(例如,userjibxwrapper),然后编写一点代码将其映射到内部对象中就更简单了。

    不过,在您的例子中,对象本身相当简单,因此您可能能够生成所需的所有映射。我会自上而下地工作。获取基类并对其进行映射,完成映射工作,然后添加子类并根据需要更改映射,并以这种方式继续工作。由于JiBX需要知道要映射的层次结构中的所有内容,因此自上而下映射比自下而上更容易。