2014-02-13 2 views
0

Я изо всех сил пытаюсь связать очень простой запрос JSON на метод с использованием Джерси. Я не могу найти, что не так, любая помощь очень ценится.Как настроить параметры JSON на параметры Джерси?

Мой запрос JSON так же просто, как это:

{"user":"xyz","pwd":"123"} 

Мой Джерси класс выглядит следующим образом:

@Path("/rest") 
public class JerseyService { 

    @POST 
    @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8") 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Path("authenticate.svc") 
    @Transactional(readOnly = true) 
    public Response authenticate(
      String user, 
      String pwd) throws IOException { 

     Response.ResponseBuilder responseBuilder = Response.ok(); 

     responseBuilder.entity(JsonSerializer.serialize(Status.SUCCESS)); 

     return responseBuilder.build(); 
    } 
} 

Когда я посылаю запрос JSON к службе, как это, «пользователь "задается весь запрос JSON как строка (user =" {\ "user \": \ "xyz \", \ "pwd \": \ "123 \"} "), а pwd остается равным нулю.

Я попытался использовать @QueryParam, @FormParam среди других аннотаций как с «пользователем», так и «pwd», но я не могу найти способ привязать значения JSON к параметрам Java для Джерси.

Любые идеи о том, что я делаю неправильно?

Спасибо!

ответ

1

Вы можете использовать JSONObject низкого уровня или создать свой собственный класс, чтобы принять параметр json. Ниже приведен пример с JSONObject.

`` `

@Path("/rest") 
public class JerseyService { 

    @POST 
    @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8") 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Path("authenticate.svc") 
    @Transactional(readOnly = true) 
    public Response authenticate(final JSONObject login) throws IOException { 
     System.out.println(login.getString("user")); 
     System.out.println(login.getString("pwd")); 
     //^^^^^^^^^^^^^^^^^ 
     Response.ResponseBuilder responseBuilder = Response.ok(); 

     responseBuilder.entity(JsonSerializer.serialize(Status.SUCCESS)); 

     return responseBuilder.build(); 
    } 
} 

` ``

+0

Это решило! Просто нужно было добавить зависимость jersey-json для импорта JSONObject. Благодаря! – felipecao

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