Java开发笔记

一、参数校验

1、校验json字符串是否符合规范

  (1)业务场景:接收前端传输过来的json串,需要将其写入数据库,写入之前需要校验其是否能够转换成对应实体类,以便后续从数据库读取

  (2)方法:借助jackson 中的反序列化工具,当字符串不符合json格式或出现实体类中不存在的字段时,会报错。步骤如下:

  【1】引入依赖

java 复制代码
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.15.2</version>
        </dependency>

注意:如果你的项目已经引入了spring-boot-starter依赖,那么就不需要重复引入,spring-boot-starter已自带jackson

  【2】校验代码

java 复制代码
public class User {
    private int id;
    private String name;

    public User() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
java 复制代码
    @Test
    public void test() {
        String json1 = "{\"id\":1,\"name\":\"张三\",\"age\":18}";
        String json2 = "acg";
        String json3 = "{\"id\":1,\"name\":\"张三\"}";
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            objectMapper.readValue(json1, User.class);
            System.out.println("json1校验成功!!");
        } catch (JsonProcessingException e) {
            System.out.println("json1校验失败!!");
        }
        try {
            objectMapper.readValue(json2, User.class);
            System.out.println("json2校验成功!!");
        } catch (JsonProcessingException e) {
            System.out.println("json2校验失败!!");
        }
        try {
            objectMapper.readValue(json3, User.class);
            System.out.println("json3校验成功!!");
        } catch (JsonProcessingException e) {
            System.out.println("json3校验失败!!");
        }
    }

  【3】运行结果

   json1多出了一个age字段,校验不通过

   json2格式错误,校验不通过

   json3格式正确且User类包含该json所有字段,校验通过

  注意:实体类必须提供无参构造方法以及set方法

java 复制代码
json1校验失败!!
json2校验失败!!
json3校验成功!!
相关推荐
时间的拾荒人1 分钟前
Qt 事件机制全解析:从事件处理到事件过滤器
开发语言·qt·面试
于指尖飞舞4 分钟前
java面试题总结
java·开发语言
ZealSinger30 分钟前
LangChain4j用AiServices拼Tool
java·rag·ai智能体·langchain4j
vx_Biye_Design38 分钟前
springboot高校选课系统82776-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express
zhangzeyuaaa1 小时前
深入理解 Ruby 运算符:本质、分类、坑点与重载实战
开发语言·前端·ruby
一木 之林1 小时前
DeepSeek Agent 开发(一)
开发语言·前端·javascript
朔北之忘 Clancy1 小时前
青少年软编等考七级题解目录
开发语言·c++·青少年编程·gesp·csp·信奥赛·noi
ss2732 小时前
AI全栈实战 | 3.2-01 Python 基础:四大数据容器怎么选,推导式为什么是 Pythonic 的灵魂
开发语言·人工智能·python
Mr_Macallon2 小时前
C++回顾(基础)(01)
c语言·开发语言·c++·学习
Sweet锦2 小时前
不调 Python,不装向量库:我用纯 Java 写了一套以图搜图引擎
java·人工智能·开源·图搜索