2012-09-21 3 views
4

Я создал следующие методы отдыха в моем отдыха на основе веб-службыВозврат простой строки в службе отдыха не возвращает json?

@GET 
@Produces("application/json") 
@Path("plain") 
public String getPlain() 
{ 
    return "hello world"; 
} 

@GET 
@Produces("application/json") 
@Path("wrapper") 
public Response getWrapper() 
{ 
    return Response.ok(new Object(){ public String data = "hello world";}).build(); 
} 

Когда я называю обычный сервис возвращает необработанный строку привет мир, а не отформатированный JSON выход. Однако обертка строки в объекте возвращает json {"data": "hello world"}

Почему это такое поведение? Как отправить plain String как json?

+0

http://docs.oracle.com/cd/E19798-01/821-1841/gipxf/index.html – kosa

+0

Вы пытались удалить аннотацию @Produces? –

+0

Почему я должен удалить аннотацию @Produces, когда все, что я хочу, это json? Как бы то ни было, я попробовал ... не помогает. – orak

ответ

-2

Попробуйте

@GET 
@Produces("application/json") 
@Path("plain") 
public String getPlain() 
{ 
String result= "hello world"; 
    return result; 
} 

JSON нужна пара ключ-значение.

+0

JSON нужна пара ключ-значение ИЛИ массив –

+0

@DavidGrant да, пара ключевых значений в вышеупомянутом контексте вопроса. – shashankaholic

+0

@shashankaholic Этот метод также возвращает ту же самую строку ... no json ... – orak

0

Я пробовал вариант выше, он не работает.

String result="hello world"; 
return result; 

Причина Строка не получает автоматически конвертируется, кажется, из-за отсутствия @XmlRootElement. Основываясь на документации в cxf http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-HandlingJAXBbeanswithoutXmlRootElementannotations, нам нужно использовать некоторый jaxbElementClassMap. Но не в состоянии найти более подробную информацию.

Смежные вопросы