Как передать объект JSON в веб-службу Java отдыха с помощью Jax RS - PullRequest
0 голосов
/ 02 июня 2011

Мне нужна помощь с сигнатурой метода updateGroup. Вот JSON Im мимо - это массив действий.

    [{"action":"add","key":"104"}]

это метод, который передается на

@PUT
@Path("/group/{id}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public IRestResponse updateGroup(@PathParam("id") String GroupName,
                                 Object GroupActions){
    //Do Something...
}

Какой тип должен быть GroupActions выше, чтобы получить JSON. ? HashMap, ArrayList, какая комбинация?

Ответы [ 2 ]

3 голосов
/ 02 июня 2011

Вы можете использовать любой тип коллекции: List, Collection, ArrayList, HashSet и т. Д .;или, что иногда лучше, массив указанного типа.Итак, один из:

public IRestResponse updateGroup(..., List<GroupAction> groupActions);
public IRestResponse updateGroup(..., GroupAction[] groupActions);
public IRestResponse updateGroup(..., HashSet<GroupActions> groupActions);

Я не совсем уверен, почему другие ответы предлагают использовать String: это вряд ли сработает, для одного (поскольку преобразователи по умолчанию не возвращаются из типа JSON / XML в String), но, что более важно, это ненужная дополнительная работа без какой-либо выгоды.

Но если вы абсолютно хотите выполнить ручной синтаксический анализ (если это так, используйте Джексон, это то, что используют большинство фреймворков), вы бы приняли ввод как InputStreamи передать это парсеру.Это оптимальный «сырой тип» для использования, и у него нет зарегистрированного обработчика, который может вызвать проблемы.

0 голосов
/ 02 июня 2011

Вы пытались использовать строковый тип и чем его анализировать?

...