@JsonProperty注解的使用

1、@JsonProperty的作用

     @JsonProperty是作用在实体类的属性上的,把属性的名称序列化另一个名称,属性名称和@JsonProperty("")里面的名称是映射关系。比如数据库使用下划线命名字段user_id,但是在实体类属性命名是驼峰式的userId,通过在userId上添加@JsonProperty("user_id"),在进行数据库查询返回给客户端的时候,可以控制输出的字段。

     简单的说,就是在给实体类属性名起别名,应用在不同的场合。

2、测试代码如下

package com.example.demo.test;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class test2 {
    public static void main(String[] args) throws JsonProcessingException {
        Person person = new Person();
        person.setId(1);
        person.setName("shitiane");

        System.out.println(new ObjectMapper().writeValueAsString(person));
    }
}
class Person{

    private Integer id;

    @JsonProperty("person_name")
    private String name;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

输出结果是 :  {"id":1,"person_name":"shitiane"}

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@JsonProperty注解是Jackson库中的一个注解,用于将Java对象的属性序列化为JSON格式时指定属性名。具体使用方法如下: 1. 导入Jackson库的依赖,例如在Maven项目中添加以下依赖: ```xml <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.3</version> </dependency> ``` 2. 在Java对象的属性上添加@JsonProperty注解,并指定属性名,例如: ```java public class User { @JsonProperty("id") private int userId; @JsonProperty("name") private String userName; // getter和setter方法省略 } ``` 上述代码中,@JsonProperty("id")表示将userId属性序列化为JSON格式时,使用"id"作为属性名;@JsonProperty("name")表示将userName属性序列化为JSON格式时,使用"name"作为属性名。 3. 将Java对象序列化为JSON格式时,使用ObjectMapper类的writeValueAsString()方法,例如: ```java ObjectWriter objectWriter = new ObjectMapper().writer().withDefaultPrettyPrinter(); User user = new User(); user.setUserId(1); user.setUserName("张三"); String json = objectWriter.writeValueAsString(user); System.out.println(json); ``` 输出结果为: ```json { "id" : 1, "name" : "张三" } ``` 上述代码中,ObjectMapper类用于将Java对象序列化为JSON格式,ObjectWriter类用于指定输出格式,withDefaultPrettyPrinter()方法表示输出的JSON格式可读性更高。 需要注意的是,如果Java对象的属性名和JSON格式中的属性名一致,可以省略@JsonProperty注解,Jackson库会自动将属性名转换为小写字母开头的字符串。例如: ```java public class User { private int id; private String name; // getter和setter方法省略 } ``` 将上述代码序列化为JSON格式时,输出结果为: ```json { "id" : 0, "name" : null } ``` 可以看到,Jackson库自动将Java对象的属性名转换为小写字母开头的字符串。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值