Передача строкового массива JSON в метод Rest CXF

Мне нужно передать список строк / массив строк в метод restful service, реализованный с помощью Apache CXF. Я мог бы достичь этого, обернув ArrayList в pojo класс, украшенный аннотациями JAXB.

Следует ли создавать класс привязки только для одной переменной экземпляра? Мой метод принимает только один параметр (т. е. массив строк). Нельзя ли привязать массив JSON непосредственно к массиву или arraylist вместо привязки в другом классе?

Запрос JSON:

    {"ids":[178,304,272]}

POJO класс

@XmlRootElement(name = "CommonRequest")
public class WSRestCommonRequest {

private List<String> ids;
    //getter setter methods
}

метод работы

@POST
@Path("cancelThese")
public void cancelThese(CommonRequest request) throws WebServiceFault {
    //---- implementation
}

Что я ищу

public void cancelThese(List<String> ids) throws WebServiceFault {
        //---- implementation
}

Это бросание ниже ошибки

Headers: {exception=[Can not deserialize instance of java.util.ArrayList out of START_OBJECT token

1 ответ

  1. Вы можете отлично использовать свой метод, если вы передаете непосредственно массив JSON [178,304,272]

    @POST
    @Path("cancelThese")
    @Consumes(MediaType.APPLICATION_JSON)
    public void cancelThese(List<String> ids) throws WebServiceFault {
            //---- implementation
    }
    

    Испытано с CXF 3.1.6 и Jackson 2.4.2