Получение JSON Object Literal из HttpServletRequest

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

Любое понимание оценено.

Спасибо.

Ответ 1

Вы ищете это?

@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());
}

Ответ 2

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

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

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

Ответ 3

Есть другой способ сделать это, используя 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);

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

Преобразование полученных данных из объекта запроса в объект 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

Ответ 7

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

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