将对象编组到json时,List成为String

时间:2011-08-31 10:00:31

标签: json jaxb marshalling

当我将对象编组到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"
            }
        }
    ]

为什么会发生这种情况,如何强制它创建一个包含一个值的列表?

1 个答案:

答案 0 :(得分:2)

尝试使用Jackson将对象处理为JSON,它在过去为我解决了同样的阵列问题。如果您使用RESTEasy(版本1.2 GA)与Maven,this link should help you get things setup使用Jackson将对象序列化为JSON。

This article还有一些有用的信息可以将Jackson与RESTEasy集成在一起。希望这有帮助!