В настоящее время я пишу REST-интерфейс Jersey для веб-приложения.Мне нужна возможность сериализации запросов JSON и XML к одному и тому же объекту, однако у меня возникают проблемы с получением Джерси (то есть JAXB / Jackson) для использования XML и JSON в нужном мне формате.
Структура XML выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8" ?>
<message>
<buckets>
<bucket>
<channels>
<channel>Test A</channel>
<channel>Test B</channel>
</channels>
<text>This is sample text</text>
</bucket>
<bucket>
<channels>
....
</channels>
<text>This is sample text</text>
</bucket>
</buckets>
<userId>10</userId>
</message>
Класс выглядит следующим образом:
@XmlRootElement(name="message")
public class MultiMessageRS {
public static class Bucket {
private List<String> channels;
private String text;
public Bucket () {}
@XmlElementWrapper(name="channels")
@XmlElement(name="channel")
public List<String> getChannels() {
return channels;
}
public void setChannels(List<String> channels) {
this.channels = channels;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
private List<Bucket> buckets;
private long userId;
public MultiMessageRS () {}
@XmlElementWrapper(name="buckets")
@XmlElement(name="bucket")
public List<Bucket> getBuckets() {
return buckets;
}
public void setBuckets(List<Bucket> buckets) {
this.buckets = buckets;
}
public long getUserId() {
return userId;
}
public void setUserId(long userId) {
this.userId = userId;
}
}
Это прекрасно работает для XML, однако он не может использовать JSON в формате Iхотел бы.А именно, проблема в том, что он не собирает массив каналов.Формат выглядит следующим образом:
{
"buckets":[
{
"bucket":{
"channels":[
"twitter",
"mobile"
],
"text":"This is sample text"
},
"bucket":{
"channels":[
"email",
"voice"
],
"text":"This is sample text"
}
}
],
"userId":"10"
}
Для правильной работы с JSON мне нужно будет сделать что-то вроде добавления массива 'channel' в 'channel', что довольно хитро.Как я смогу справиться с этой ситуацией?