Получение 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());