jackson之实体类和json数据格式之间的转化

1.导入jackson依赖


<dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.15.2</version>
    </dependency>

2.为实体类属性提供getter和setter方法


getter和setter方法在jackson用于对对象的序列化和反序列化,那什么是序列化和反序列化呢?

序列化:指将对象的状态转换为字节流的过程,以便进行存储、传输或在网络上进行交互。在序列化过程中,对象的状态被编码为一连串的字节,可以保存到磁盘、数据库或通过网络发送给远程系统。

  • 在这里就是将实体类转换为json数据格式。

反序列化:将字节流恢复为对象的过程,将序列化的字节流重新转换为对象的状态。反序列化过程通过将字节流解码,重新创建对象,并恢复其状态。

  • 在这里就是将前端发往后台的json封装为对象的过程

3.相关注解的使用

  • 如果说不想提供getter和setter方法,也是可以的

@JsonProperty 注解用于定义 Java 对象中属性与 JSON 字段之间的映射关系,对java对象进行序列化。

例如有以下实体类:

public class User {
    @JsonProperty("name")
    private String userName;
}

@JsonProperty(“name”) 注解将 Java 对象中的 userName 属性映射到 JSON 字段名为 “name” 的字段。可以省去getter方法。假如有一个通过反射实例化出来的一个该类对象其username的value为“jack”那么将该类的实例化对象return到前端后jackson会将其解析为以下格式的json数据:

{
	"name":"jack"
}

当然,如果在使用该注解的同时提供了getter方法依旧是注解优先,若没有该注解则通过相应getter方法使用默认属性名作为json的字段名。

@JsonAlias 注解用于指定多个可能的 JSON 字段名称与 Java 对象属性的映射关系,它可以用于反序列化操作。

例如在实体类中又加入了一条@JsonAlias注解,那么可以省去setter方法:

public class User {
	@JsonProperty("name")
    @JsonAlias({"my_name", "nick_name"})
    private String userName;
}

如果后台接收到来自前端的以下两条json数据:

{
	"my_Name":"jack"
}
{
	"nick_name":"jack"
}

那么这两条json数据都可以被jackson反序列化为一个userName属性为jack的实例化对象。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值