List становится String, когда Marshalling объект для JSON - PullRequest
0 голосов
/ 31 августа 2011

Я получаю довольно странную ошибку при сортировке моего объекта в 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;
   } 
}

Все работает нормально, за исключением того, что если список contactPersonsForMyObject содержит только одно значение, которое он получает, перенаправляется в строку, что, конечно, создает проблемы, поскольку приложение, потребляющее это, ожидает список.

Маршаллированный объект:

[
        {
            "myobject": {
                "somethingcool": "amazing",
                "contactPersonsForMyObject": [
                    "test.test@gmail.com",
                    "test@test.se"
                ],
                "myObjectId": "c85e48730501bfae41e67714c6131b7d"
            }
        },
        {
            "myobject": {
                "somethingcool": "cool",
                "contactPersonsForMyObject":"test@test2.se",                
                "myObjectId": "c85e48730501bfae41e67714cqwerty"
            }
        }
    ]

Почему это происходит и как заставить его создать список с одним значением?

1 Ответ

2 голосов
/ 15 сентября 2011

Попробуйте использовать Джексона для обработки ваших объектов в JSON, это решало ту же проблему с массивами для меня в прошлом.Если вы используете RESTEasy (версия 1.2 GA) с Maven, эта ссылка должна помочь вам настроить , чтобы использовать Джексона для сериализации объектов в JSON.

Эта статья также есть некоторая полезная информация для интеграции Джексона с RESTEasy.Надеюсь, это поможет!

...