Servlet练习—获取页面body中json数据

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
简介: Servlet练习—获取页面body中json数据

本文使用maven项目,并使用 idea 中的 smart Tomcat 插件,smart Tomcat 配置如下:

没接触servlet的同学可以参考:Servlet初识—编写hello world+使用smart Tomcat插件部署

1、在 maven 项目中引入 jackson

Servlet 没有内置 json解析,为了方便我们可以引入第三方json库:jackson

maven 官方地址:https://mvnrepository.com/

在maven官网搜索 jackson,点击第一个搜索结果 Jackson Databind

进入之后随便挑一个版本,这里我选的是 2.13.4.1 复制 Maven 内的代码

d97838942a0dddccda8a8f0af9bddd5e_9e8621a1356a4b2a8a4f15ac2450b123.png

复制 Maven 内的代码

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.4.1</version>
</dependency>

注意:

  1. 如果没有 dependencies 标签,那就需要自己手写一个
  2. 如果代码报红,可以点击右上的刷新按钮

2、编写代码

① 介绍 jackson 提供操作 json 数据的类和方法

jackson  提供了一个核心类共我们读取和操作json数据,该类为 ObjectMapper

对于该类,我们主要掌握两个方法即可,如下

1. readValue 方法

作用:把 json 格式的数据转成 java 对象

传参

第一个参数:可以是字符串,也可以是字符流

第二个参数:是一个类对象(就是要解析出来的结果的对象的类)  

2. writeValueAsString 方法

作用:把 java 对象转成 json 格式的字符

② 确定 json 数据格式,并写出对应的类

此处假设请求的 body 格式为  { Id: 10, name: "张三" }

然后,根据属性创建一个 Person 类(目的:方便我们接收数据)

class Person{
public int Id;
public String Name;
 }

注意:

1.这个类里的属性务必使 public 或者带有 public 的 getter / setter 方法,否则 jackson 无法访问这个对象的属性

2.这个类务必要有无参版本的构造方法!!!    

③ 编写servlet代码

编写一个类 JsonServlet 并继承 HttpServlet,同时实现 doGet 方法并在该方法中实现接收json数据等操作

@WebServlet("/json") :设置该类的 Servlet Path为 /json

总代码如下

 class Person{
    //1.这个类里的属性务必使 public 或者带有 public 的 getter / setter
    // 否则 jackson 无法访问这个对象的属性
    //2.这个类务必要有无参版本的构造方法!!!
    public int Id;
    public String Name;
}
@WebServlet("/json")
public class JsonServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       // 此处假设请求的 body 格式为
       //  { Id: 10, name: "张三" }
        ObjectMapper objectMapper = new ObjectMapper();
        Person p = objectMapper.readValue(req.getInputStream(),Person.class);
        System.out.println(p.Id);
        System.out.println(p.Name);
        //设置字符集
        resp.setContentType("text/html; charset=utf8");
        resp.getWriter().write(p.Id +", "+ p.Name);
    }
}

3、使用 postman 发送数据观察结果

首先,运行该代码,然后打开 postman,点击 +

在 GET 后输入地址:http://127.0.0.1:8080/servlet/json

返回选择下面 Body -> raw -> JSON,并在下发输入要发送的 json 数据

注意:在 postman 中写 json 格式的时候,务必要保证这里的key 是带引号的!!!

点击 Send,就能在下发看见发送结果了

同时,在Idea 中也有打印

到此,json 数据就发送并接收成功!!

4、拓展 readValue 方法返回构造对象的过程

1. 读取输入流,获取到要解析的字符串。


2. 把字符串按照 json 格式解析,得到一组键值对(Map)。


3. 根据类对象,创建一个实例。


4. 遍历类对象中的属性的名字,拿着名字去上述 Map 中查询,查到的 value 赋值到对应的对象的属性中。


5. 返回这个构造完成的对象。


相关文章
|
2天前
|
存储 JSON API
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 淘宝API接口(如淘宝开放平台提供的API)允许开发者获取淘宝商品的各种信息,包括商品详情。然而,需要注意的是,直接访问淘宝的商品数据API通常需要商家身份或开发者权限,并且需要遵循淘宝的API使用协议。
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
|
6天前
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
|
2天前
|
JSON Java API
Jackson:SpringBoot中的JSON王者,优雅掌控数据之道
【8月更文挑战第29天】在Java的广阔生态中,SpringBoot以其“约定优于配置”的理念,极大地简化了企业级应用的开发流程。而在SpringBoot处理HTTP请求与响应的过程中,JSON数据的序列化和反序列化是不可或缺的一环。在众多JSON处理库中,Jackson凭借其高效、灵活和强大的特性,成为了SpringBoot中处理JSON数据的首选。今天,就让我们一起深入探讨Jackson如何在SpringBoot中优雅地控制JSON数据。
10 0
|
3天前
|
JSON 数据处理 数据格式
Python中JSON结构数据的高效增删改操作
Python中JSON结构数据的高效增删改操作
|
3天前
|
XML JSON 定位技术
在Python中操纵json数据的最佳方式
在Python中操纵json数据的最佳方式
|
5天前
|
JSON API 数据格式
基于服务器响应的实时天气数据进行JSON解析的详细代码及其框架
【8月更文挑战第25天】这段资料介绍了一个使用Python从服务器获取实时天气数据并解析JSON格式数据的基本框架。主要分为三个部分:一是安装必要的`requests`库以发起HTTP请求获取数据,同时利用Python内置的`json`库处理JSON数据;二是提供了具体的代码实现,包括获取天气数据的`get_weather_data`函数和解析数据的`parse_weather_data`函数;三是对代码逻辑进行了详细说明,包括如何通过API获取数据以及如何解析这些数据来获取温度和天气描述等信息。用户需要根据实际使用的天气API调整代码中的API地址、参数和字段名称。
|
6天前
|
JSON 开发工具 数据格式
【Azure Event Hub】Event Hub的Process Data页面无法通过JSON格式预览数据
【Azure Event Hub】Event Hub的Process Data页面无法通过JSON格式预览数据
|
11天前
|
JSON 前端开发 JavaScript
|
12天前
|
JSON 前端开发 API
【淘系】商品详情属性解析(属性规格详情图sku等json数据示例返回参考),淘系API接口系列
在淘宝(或天猫)平台上,商品详情属性(如属性规格、详情图、SKU等)是商家在发布商品时设置的,用于描述商品的详细信息和不同规格选项。这些信息对于消费者了解商品特性、进行购买决策至关重要。然而,直接通过前端页面获取这些信息的结构化数据(如JSON格式)并非直接暴露给普通用户或开发者,因为这涉及到平台的商业机密和数据安全。 不过,淘宝平台提供了丰富的API接口(如淘宝开放平台API),允许有资质的开发者或合作伙伴通过编程方式获取商品信息。这些API接口通常需要注册开发者账号、申请应用密钥(App Key)和秘钥(App Secret),并遵守淘宝的API使用协议。
|
13天前
|
JSON Java Android开发
Android 开发者必备秘籍:轻松攻克 JSON 格式数据解析难题,让你的应用更出色!
【8月更文挑战第18天】在Android开发中,解析JSON数据至关重要。JSON以其简洁和易读成为首选的数据交换格式。开发者可通过多种途径解析JSON,如使用内置的`JSONObject`和`JSONArray`类直接操作数据,或借助Google提供的Gson库将JSON自动映射为Java对象。无论哪种方法,正确解析JSON都是实现高效应用的关键,能帮助开发者处理网络请求返回的数据,并将其展示给用户,从而提升应用的功能性和用户体验。
25 1