2015-07-04 2 views
0

Мой успокоительные метод API выглядит следующим образомКак вывести json из JSONArray с помощью jax rs/jersey?

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public JSONArray getMessage() 
{ 
    FreeDriversService f=new FreeDriversService(); 
    try { 
     return f.executeFreeDrivers(); // this method return a JSONArray 
    } 
    catch(Exception e) { 
     System.out.println(e.toString()); 
     return new JSONArray(); 
    } 
} 

Когда я использую метод toString() на JSONArray он производит результат, но я хотел бы JSON в качестве вывода. Как я могу это сделать?

Я получаю эту ошибку

A message body writer for Java class org.json.JSONArray, and Java type class org.json.JSONArray, and MIME media type application/json 
was not found 

ответ

1

Проблема Резюме: -

Вы упомянули выход в JSON в @Produces аннотацию, как @Produces(MediaType.APPLICATION_JSON) но вместо отправки JSONObject ваш метод getMessage возвращается JSONArray , Вы не можете преобразовать JSON к JSONArray просто, потому что в JSONArray же типа JSONObject можно повторить несколько раз с той же keys, которые могут быть заменены позже values из нескольких JSONObject.

Решение: -

Вы можете создать JSONObject и могут поставить JSONArray внутри него как value для определенного пользователя key.

 @GET 
     @Produces(MediaType.APPLICATION_JSON) 
     public Response getMessage(){ 
     JSONObject finalJson = new JSONObject(); 
     JSONArray inputArray = new JSONArray(); 
      FreeDriversService f=new FreeDriversService(); 
      try{ 

      inputArray = f.executeFreeDrivers(); // this method return a JSONArray 
      }catch(Exception e){ 
       System.out.println(e.toString()); 

      } 
      finalJson.put("array",inputArray); 
      return Response.status(200).entity(finalJson).build(); 
      } 
+0

Какой должен быть тип возврата getMessage? JSONObject как возвращаемый тип дает такую ​​же ошибку –

+0

@NitinJaiman Тип возврата должен быть объектом 'Response'. Из 'JSONObject' вы можете построить объект' Response' как 'Response.status (200) .entity (finalJson) .build();'. Отредактировано это и в коде выше. –

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