Как вернуть список Java <String> Json, используя Jax-RS

Я хотел бы знать, как метод возвращает массив JSON List, например:

@GET 
@Produces("application/json")
public List<String> aMethod(){
  return Array.asList("text1", "text2", "text3");
}

Я хотел бы знать, например, как получить тип аргумента List в моем методе, например

@PUT
@Consumes("application/json") void otherMethod(List<String>){
   // do something ;
}

Я читал о JaxbContext, я понимаю, как он может мне помочь.

 user26839621 июн. 2012 г., 22:08
JAXB для XML, вы путаете его с JAX-RS?
 Oleksi22 июн. 2012 г., 16:15
@ user268396 нет, JAX-B может использоваться для автоматической сериализации / десериализации данных, поступающих и выходящих из веб-службы JAX-RS.
 William Miranda22 июн. 2012 г., 16:13
Хорошо, но как мне вернуть List & lt; String & gt; с джаксом?
 William Miranda22 июн. 2012 г., 16:25
Я только хочу узнать, как это возможно или можно ли вернуть или получить список & lt; String & gt; с Jax-RS
 user26839622 июн. 2012 г., 16:48
@Oleksi: JAXB специально разработан для производства / потребления XML (в конце концов, Java Architecture для XML Binding). Однако есть библиотека (Jettison), которая позволяет вам анализировать и выдавать JSON через реализацию StaX. Дело в том, что JAXB не имеет какой-либо концепции JSON, поэтому любая поддержка JSON зависит от модификации JSON до XML-модели мира (StaX).

Ответы на вопрос(2)

поэтому я закончил упаковкой строки в один объект поля.

return listWithString
                .stream()
                .map(
                        stringElement -> {
                            MyBoxObject bo = new MyBoxObject();
                            bo.setSomeField(stringElement);
                            return bo;
                        })
                .collect(Collectors.toList());
Решение Вопроса

List поддерживается. Первый представляет собой список элементов, второй - строку с разделителями («нормальное» значение или атрибут XML, которые анализируются в списке с использованием некоторого разделителя). Первое, кажется, то, что вы хотите (& quot; массив & quot;).

Для справки смотрите:http://jaxb.java.net/jaxb20-ed/api/javax/xml/bind/annotation/XmlList.html

Вы заметите, что в обоих случаях требуемый список должен быть инкапсулирован каким-либо другим объектом. По сути, XML (и, соответственно, JAXB) любит отслеживать все обратно до одного корневого узла / объекта. Итак, чтобы смоделировать это, вам нужно что-то вроде этого:

@XmlRootElement(name="wrapper")
public abstract class ListWrapper {
   public List<String> names;
}

Тогда ваши методы должны быть изменены, чтобы принять / вернутьListWrapper объекты и извлекать фактический список из него.

 William Miranda22 июн. 2012 г., 18:20
Я уже представлял, что невозможно напрямую вернуть List & lt; String & gt ;. Спасибо

Ваш ответ на вопрос