当前位置: 首页 > news >正文

Spring Boot 注解探秘:JSON 处理的魔法世界

在 Spring Boot 应用开发中,高效处理 JSON 数据同样至关重要。Spring Boot 不仅在 Bean 管理方面表现出色,提供强大的注解系统以助力开发者轻松管理 Bean 的生命周期和依赖注入,在 JSON 数据处理上也毫不逊色。本文将深入探讨 Spring Boot 中与 JSON 处理相关的注解及其应用场景。

一、@RequestBody和@ResponseBody

@RequestBody和@ResponseBody用于controller的方法。
@RequestBody在请求的时候会自动将JSON字符串反序列化成指定对象@ResponseBody会在响应客户端请求时,自动将返回值对象序列化成JSON格式并返回
。如,
在SpringBoot项目中,@ResponseBody和@Controller一般不单独使用,而是使用@RestController,更多细节见Spring Boot 注解探秘:HTTP 请求的魅力之旅。

@RestController
@RequestMapping("/employee")
public class UserController{@PostMapping("/page-employee")Response<PageResult<Employee>> pageEmployee(@RequestBody PageParam<UserReq> pageParam)
}

二、@JsonIgnore和@JsonIgnorePropeties

@JsonIgnore和@JsonIgnorePropeties都用于在序列化和反序列化时忽略指定的字段。
@JsonIgnorePropeties可以指定多个属性,作用于类或方法上,@JsonIgnore只能指定具体的单个属性,作用于方法或者字段上。如,

@JsonPropeties(ignoreUnknown = true)
public class Employee{private String employeId;private String employeeName;private Integer employeeNo;private String phone;
}

该示例中,无论使用ObjectMapper.readValue(jsonStr, Employee.class)方法反序列化还是使用ObjectMapper.writeValueAsString(employee)序列化时,都会忽略未知的属性。

// 方式1
@JsonPropeties({'phone'})
public class Employee{private String employeId;private String employeeName;private Integer employeeNo;// 方式2@JsonIgnoreprivate String phone;
}

该示例中,方式1和方式2是等价的,在序列化Employee对象成JSON时,phone字段会被忽略。

三、@JsonPropeties和@JsonAlias

@JsonPropeties用于在序列化时,指定一个字段在JSON中的名称。
@JsonAlias刚好相反,用于在发序列化JSON时,指定一个对象的属性。
如,

public class Employee{private String employeId;private String employeeName;private Integer employeeNo;@JsonPropeties("mobile_phone")private String phone;
}

该示例中,当Employee对象被序列化成JSON时,phone字段将被命名为mobile_phone。

public class Employee{private String employeId;private String employeeName;private Integer employeeNo;@JsonAlias("mobile_phone", "iphone")private String phone;
}

该示例中,当从JSON反序列化Employee时,JSON中包含的iphone或mobile_phone字段,将被映射到为phone字段

四、@JsonFormat

用于在 JSON 序列化和反序列化过程中,指定日期和时间字段的格式,确保日期和时间字段按照指定的格式进行转换。如,

public class Employee{private String employeId;private String employeeName;private Integer employeeNo;private String phone;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private OffsetDateTime createTime;
}

该示例中,当Employee对象被序列化为JSON时,createTime字段将按照yyyy-MM-dd HH:mm:ss的格式输出。同样,在反序列化过程中,也会按照此格式将JSON中的字符串转换为OffsetDateTime对象。

五、总结

在SpringBoot项目中,上述注解在处理JSON数据时,十分高效,通过合理利用这些注解,我们可以更专注于业务逻辑的实现,提升开发效率。


http://www.mrgr.cn/news/23867.html

相关文章:

  • 1.滑动窗口问题
  • 冒泡排序;选择排序;插入排序;快排;判断大小端;位运算
  • Delphi 12.1安卓APP开发中获取硬件信息及手机号
  • JAVA进阶学习15
  • 【Go】-Gin框架
  • LCR 021
  • 智能优化算法-樽海鞘优化算法(SSA)(附源码)
  • 一款好用的电子样本册转换器
  • JAVA中在junit测试类中加载Spring托管,通过注解使用Bean
  • shell的使用sed处理数据
  • 轻量级模型解读——GhostNet系列
  • Git版本控制工具
  • day-52 三数之和
  • Qt放Element网页滑动菜单栏
  • udp的广播,多播,单播 demo
  • 图书馆上新了!新华书店×度小满推出“开学季悦读计划”公益活动
  • OpenCV findTours函数及其用法
  • Hive SQL子查询应用
  • springboot基础-Druid数据库连接池使用
  • [产品管理-4]:NPDP新产品开发 - 2 - 制定企业经营战略目标的结构化方法与工具