JiBX привязка - корневой объект расширяет объект
Можно ли даже связать корневой объект с суперполями?
У меня довольно сложная сущность (сущности) для привязки. Я уже потерян с этим:)
Это моя ситуация с кодом:
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 ответ
Вы можете, но вы должны определить отображения для всего в иерархии. Я столкнулся с тем же. Это оказалось достаточно сложным, и я обнаружил, что проще создать объект-обертку JIBX для сопоставления (например, с UserJibxWrapper), а затем написать небольшой код для сопоставления этого с внутренними объектами.
Однако в вашем случае сами объекты довольно просты, поэтому вы можете сгенерировать все необходимые отображения. Я бы работал сверху вниз. Возьмите базовый класс и сопоставьте его, получите работу по отображению, затем добавьте подкласс и измените ваши отображения по мере необходимости, и продолжайте работать таким образом. Поскольку JIBX нужно знать все в иерархии для сопоставления, проще сопоставить сверху вниз, чем снизу вверх.