Извлечение литерала объекта JSON из запроса HttpServletRequest - PullRequest
48 голосов
/ 10 октября 2009

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

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

Спасибо.

Ответы [ 7 ]

58 голосов
/ 30 марта 2010

вы ищете это?

@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());
}
27 голосов
/ 27 февраля 2013

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

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

MyBean myBean = gson.fromJson(reader, MyBean.class);
19 голосов
/ 09 декабря 2014

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

 ObjectMapper mapper = new ObjectMapper();
  Book book = mapper.readValue(request.getInputStream(),Book.class);
16 голосов
/ 30 апреля 2015

Есть еще один способ сделать это, используя 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);
7 голосов
/ 22 февраля 2017

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

String requestData = request.getReader().lines().collect(Collectors.joining());
5 голосов
/ 28 июня 2010

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

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

0 голосов
/ 08 августа 2011

Преобразование полученных данных из объекта запроса в объект 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...