当我将对象编组到json时,我遇到了一个非常奇怪的错误。我的对象是这样注释的。
我的课程:
@XmlRootElement(name = "myobject")
public class MyObject {
private List<String> contactPersonsForMyObject;
@javax.xml.bind.annotation.XmlElement()
public List<String> getContactPersonsForMyObject() {
return contactPersonsForMyObject;
}
public void setContactPersonsForMyObject(List<String> contactPersonsForMyObject) {
this.contactPersonsForMyObject = contactPersonsForMyObject;
}
}
一切正常,除非如果List contactPersonsForMyObject只包含一个值,它会被编组到一个字符串中,因为使用它的应用程序需要一个列表,因此会产生问题。
编组对象:
[
{
"myobject": {
"somethingcool": "amazing",
"contactPersonsForMyObject": [
"test.test@gmail.com",
"test@test.se"
],
"myObjectId": "c85e48730501bfae41e67714c6131b7d"
}
},
{
"myobject": {
"somethingcool": "cool",
"contactPersonsForMyObject":"test@test2.se",
"myObjectId": "c85e48730501bfae41e67714cqwerty"
}
}
]
为什么会发生这种情况,如何强制它创建一个包含一个值的列表?
答案 0 :(得分:2)
尝试使用Jackson将对象处理为JSON,它在过去为我解决了同样的阵列问题。如果您使用RESTEasy(版本1.2 GA)与Maven,this link should help you get things setup使用Jackson将对象序列化为JSON。
This article还有一些有用的信息可以将Jackson与RESTEasy集成在一起。希望这有帮助!