2017-01-11 3 views
2

я столкнулся вопрос, пытаясь вернуть ответ с объектом JSON в Джерси 2.Как я должен вернуть ответ JSON в Джерси 2

Ниже приводится фрагмент кода:

 import javax.ws.rs.GET; 
     import javax.ws.rs.Path; 
     import javax.ws.rs.Produces; 
     import javax.ws.rs.core.MediaType; 
     import javax.ws.rs.core.Response; 
     import javax.ws.rs.core.Response.Status; 
     import org.codehaus.jettison.json.JSONObject; 

     @Path("/message") 
     public class HelloWorld { 

      @Path("/getJson") 
      @GET 
      @Produces(MediaType.APPLICATION_JSON) 
      public Response getJSON() { 
      JSONObject object = null; 
      Response response = null; 
      try { 
       object = new JSONObject(); 
       object.put("Name", "Bryan"); 
       object.put("Age", "27"); 
       response = Response.status(Status.OK).entity(object).build(); 
      } catch (Exception e) { 
       System.out.println("error=" + e.getMessage()); 
      } 
      return response; 
      } 
     } 

Я получаю исключение:

No serializer found for class org.codehaus.jettison.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) 

Связанные должности посоветовали мне попробовать следующее.

  1. Использование ObjectMapper и установить свойство mapper.configure (SerializationFeature.FAIL_ON_EMPTY_BEANS, ложь);: Мне не нужно использовать ObjectMapper в этом сценарии, так как я просто хочу вернуть объект json.

  2. Попробуйте POJO вместо JSON Объект: Да POJO работает нормально, но это не то, что я хотел. Мне нужно вернуть Response с Json-объектом, который будет проанализирован кодом Java-скрипта.

+0

Получить строку из JSONObject и установить эту строку в ответ –

+0

@VikasSachdeva Спасибо за тонну. Оно работало завораживающе. не знаю, почему это не ударило меня. – Heisenberg

ответ

4

Получить String от JSONObject и установить, что String в Response. Что-то вроде ниже -

object = new JSONObject(); 
object.put("Name", "Bryan"); 
object.put("Age", "27"); 
response = Response.status(Status.OK).entity(object.toString()).build(); 

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

  • Нет связанных вопросов^_^