Как получить и проанализировать ответ JSON от x- www-form-urlencoded POST, RestTemplate (Java)? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть такой способ сделать запрос:

    @Override
    public HttpEntity<MultiValueMap<String, String>> generateRequestEntity(Date date) {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

        MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
        map.add("key", "SOME_API_KEY");
        map.add("source", "SOME_API_SOURCE");
        if (date == null)
            map.add("method", "getall");
        else {
            map.add("method", "getfrom");
            map.add("date", new SimpleDateFormat("yyyy-MM-dd").format(date));
        }

        return new HttpEntity<>(map, headers);
    }

Я отправляю запрос и получаю ответ, как рекомендовано по следующей ссылке: URL

HttpEntity<MultiValueMap<String, String>> request = generateRequestEntity(date);
ResponseEntity<OnlineSell[]> response = restTemplate.postForEntity(url, request, OnlineSell[].class);
OnlineSell[] onlineSells = response.getBody();

Но у меня проблема. Я не могу разобрать ответ JSON. OnlineSell - класс, который должен хранить ответ, НО я просто не могу создать структуру, которая успешно хранит значения этого ответа. Приходит очень большое и сложное дерево ответов.

Ответ: Могу ли я получить из него JSONObject для синтаксического анализа и сохранения вручную ? Или я могу получить помощь с синтаксическим анализом JSON, предварительно обновив этот пост и добавив его ( форма ответа Почтальон )?

1 Ответ

1 голос
/ 17 июня 2020

Что вы можете сделать, так это рассматривать ResponseEntity как String. Затем вы можете использовать objectMapper с readValue(),

Примерно так:

ResponseEntity<String> response = restTemplate().postForEntity(url, request, String.class);

String body = response.getBody();
OnlineSell[] onlineSells = new ObjectMapper().readValue(body, OnlineSell[].class);
...