从HttpServletRequest中检索JSON对象文字

km0tfn4u  于 2023-06-25  发布在  其他
关注(0)|答案(8)|浏览(127)

我正在编写需要提取发布到servlet的对象文本的代码。我研究了HttpServletRequest对象的API,但我不清楚如何从请求中获取JSON对象,因为它不是从网页上的表单元素发布的。
任何见解都是赞赏的。
谢谢

n1bvdmb6

n1bvdmb61#

你在找这个吗?

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

rkttyhzu2#

使用Java 8 Stream APIHttpServletRequest获取请求数据的简单方法:

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

idv4meu83#

使用JacksonJSON处理器

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

vq8itlhq4#

最简单的方法是从Reader对象填充bean,这可以在单个调用中完成:

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

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

kzipqqlq5#

还有另一种方法,使用org.apache.commons.io.IOUtils从请求中提取String

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

然后你可以做任何你想做的事情,转换成JSON或其他与Gson的对象,等等。

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

jgzswidk6#

如果您试图从请求体中获取数据,则上面的代码可以工作。但是,我认为你有同样的问题,我是..
如果正文中的数据是JSON形式的,并且您希望它作为Java对象,则需要自己解析它,或者使用google-gson这样的库来处理它。你应该查看项目网站上的文档和示例,以了解如何使用它。很简单。

cclgggtu

cclgggtu7#

使用Google-Gson将检索到的数据从请求对象转换为JSON对象,如下所示

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

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

ohfgkhjo8#

使用以下依赖项

<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);

相关问题