Как правильно удалить ответ JAX-RS Webservice (массив JSON)? - PullRequest
0 голосов
/ 19 октября 2011

У меня возникли проблемы с использованием веб-служб Jersey REST.

У меня есть следующий класс домена:

@XmlRootElement
public class User {

    private long id;
    private String email;
    private String forename;
    private String role;

    public User() {
        // required for JAXB
    }

    // + Getters + Setters
}

и следующий класс ресурсов:

@Produces(MediaType.APPLICATION_JSON)
@Path("/users")
public class UserService {

    @GET
    public User[] getUsers() {
        User[] users = ... // Users from DB 
        return users;
    }
}

ЕслиЯ запрашиваю у этого ресурса (/ users) следующий ответ json:

{
 "user":  
 [
  {
   "id":"1",
   "email":"Toby@email.com",
   "forename":"Toby",
   "role":"admin"
  }
 ,
  {
   "id":"2",
   "email":"Rob@email.com",
   "forename":"Rob",
   "role":"developer"
  }
 ]
}

На стороне клиента (где у меня тот же класс User.class) я хочу отменить отправку этого ответа JSON обратно в соответствующие POJO,Это означает, что в этом примере я хотел бы получить два объекта типа User.Я сделал несколько экспериментальных вещей с GSON, таких как

User[] users = gson.fromJson(JSONString, User[].class)

, но не смог заставить его работать.Исключение:

JSONParseException: Expecting object but found array

Может кто-нибудь сказать мне, что я здесь делаю неправильно?Или проблема в моем формате json?

Редактировать: Пробовал с собственной реализацией адаптера типа коллекции, как упомянуто здесь :

Type usersType = new TypeToken<List<User>>() {}.getType();
List<User> users = new ArrayList<User>();
users = gson.fromJson(reader, usersType);

Теперь я получаю JsonParseException:

The JsonDeserializer failed to deserialize Json Object {"user":[{"id":"1","email":"Toby@email.com","forename":"Toby",....

1 Ответ

0 голосов
/ 20 октября 2011

это действительно был формат ответа json! с помощью этого post я обошел путь Object-> XML-> JSON к прямому преобразованию Object-> JSON, которое приводит к чистому синтаксису JSON, который интерпретируется gson. скоро обновлю ответ с моим полным источником примеров.

...