Как отправить JSONArray через Rest API - PullRequest
2 голосов
/ 01 апреля 2019

Мне нужна помощь с REST API.Я пытаюсь отправить данные JSON через API, используя тело Почтальона для его проверки.Кажется, он работает, но когда я проверяю массив, отлаживая код, он говорит, что размер массива равен 0.

Я пытаюсь отправить это:

{
   "data":[
      { 
         "name":"",
         "valor":"",
         "check":"0",
         "ind":"1"
      },
      {
         "name":"",
         "valor":"* FT NPR **",
         "check":"1",
         "ind":"0"
      }
    ]
}

Яиспользуя Java EE.Я пытался проанализировать код для String, но я не знаю, правильно ли я это делаю или просто не работает.

Это код:

@GET
@Path("subGroup")
@Produces("application/json")
@Consumes(MediaType.APPLICATION_JSON)
public Response definedSubGrupo(@QueryParam("Us") int US, JSONArray data) 
{
   String Data=UtilClass.definedSubGrupo(data);
   return UtilClass.getReturn(Data);
}

Я ожидал полный JSON, который я отправил, но фактический результат - ничто (размер = 0).

Спасибо.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Вы находитесь на контейнере JavaEE, и, учитывая указанные вами аннотации, вы строите поверх JAX-RS.С JAX-RS вы можете принять тело запроса в виде простого String

public Response definedSubGrupo(@QueryParam("Us")final int US, final String jsonBody) { ... }

Затем вы можете преобразовать это jsonBody String в объект, представляющий структуру документа JSON, используя одну из доступных библиотек.на рынке (JSON-Java, Gson, Джексон и т. д.).

Например, с Джексоном у вас будет

final TreeNode treeNode = objectMapper.readTree(jsonBody);

С JSON-Java вы можете иметь

final JSONObject jsonObject = new JSONObject(jsonBody);
final JSONArray data = jsonObject.getJSONArray("data");

На данный момент вы говорите, что JAX-RS в основном " сопоставляет тело запроса с этим JSONArray class ".
К сожалению, классмакет JSONArray кажется несовместимым с JSON, который вы отправляете, поэтому JAX-RS просто создает новый, «пустой» экземпляр.

0 голосов
/ 01 апреля 2019

Вы можете напрямую передать список вашего объекта следующим образом:

public Response definedSubGrupo(@QueryParam("Us") int US, List<YourObject> data) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...