Получение литерала объекта JSON из запроса HttpServletRequest

Я пишу код, который должен извлечь объектный литерал, размещенный в сервлете. Я изучил API для объекта HttpServletRequest, но мне не ясно, как получить объект JSON из запроса, поскольку он не публикуется из элемента формы на веб-странице.

Любое понимание приветствуется.

Благодарю.

8 ответов

Ты ищешь это?

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    StringBuilder sb = new StringBuilder();
    BufferedReader reader = request.getReader();
    try {
        String line;
        while ((line = reader.readLine()) != null) {
            sb.append(line).append('\n');
        }
    } finally {
        reader.close();
    }
    System.out.println(sb.toString());
}

Это простой способ получить данные запроса от HttpServletRequestиспользуя Java 8 Stream API:

String requestData = request.getReader().lines().collect(Collectors.joining());

Использовать процессор JSON JSON

 ObjectMapper mapper = new ObjectMapper();
  Book book = mapper.readValue(request.getInputStream(),Book.class);

Самый простой способ - заполнить ваш бин из объекта Reader, это можно сделать за один вызов:

BufferedReader reader = request.getReader();
Gson gson = new Gson();

MyBean myBean = gson.fromJson(reader, MyBean.class);

Есть еще один способ сделать это, используя org.apache.commons.io.IOUtils извлечь строку из запроса

String jsonString = IOUtils.toString(request.getInputStream());

Тогда вы можете делать все, что хотите, конвертировать в JSON или другой объект с Gson, так далее.

JSONObject json = new JSONObject(jsonString);
MyObject myObject = new Gson().fromJson(jsonString, MyObject.class);

Если вы пытаетесь получить данные из тела запроса, приведенный выше код работает. Но я думаю, что у вас та же проблема, что и я..

Если данные в теле представлены в форме JSON, и вы хотите, чтобы они были объектами Java, вам нужно проанализировать их самостоятельно или использовать библиотеку, например google-gson, для их обработки. Вы должны посмотреть документы и примеры на веб-сайте проекта, чтобы узнать, как его использовать. Это довольно просто.

Преобразование полученных данных из объекта запроса в объект json выполняется, как показано ниже, с помощью google-gson

Gson gson = new Gson();
ABCClass c1 = gson.fromJson(data, ABCClass.class);

//ABC class is a class whose strcuture matches to the data variable retrieved

Используйте следующие зависимости

      <dependency>
   <groupId>com.google.code.gson</groupId>
   <artifactId>gson</artifactId>
   <version>2.10.1</version>
</dependency>

Версия может быть любой последней.

Мы можем обработать ввод Json с помощью следующей строки кода

      BufferedReader reader = request.getReader();
Gson gson = new Gson();
MyBean myBean = gson.fromJson(reader, MyBean.class);
Другие вопросы по тегам