Получение литерала объекта 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);