@JsonProperty的使用

一、jackson的maven依赖

<dependency>
    <groupId>com.fasterxml.jackson.coregroupId>
    <artifactId>jackson-databindartifactId>
    <version>2.5.3version>
dependency>

@JsonProperty 此注解用于属性上,作用是把属性的名称序列化为另外一个名称,如把name序列化成userName。

二、实体类的建立

import com.fasterxml.jackson.annotation.JsonProperty;

public class Person {
    private Integer id;
    @JsonProperty("userName")
    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 + "]";
    }
}

三、测试类代码:

import java.io.IOException;

import com.fasterxml.jackson.databind.ObjectMapper;

public class JSONTest {
    public static void main(String[] args) throws IOException {
        Person p = new Person();
        p.setId(1001);
        p.setName("huangbaokang");
        // 在name字段上未加@JsonProperty注解时,打印{"id":1001,"name":"huangbaokang"}
        // 加上@JsonProperty注解时,控制台打印输出{"id":1001,"userName":"huangbaokang"}
        System.out.println(new ObjectMapper().writeValueAsString(p));
    }
}

使用@JsonProperty注解特别有用,新建数据库实体类Model,由于后期数据库字段名可能有所改变,在进行后台数据库查询返回给客户端时,我们可以控制输出的字段,如上述代码,我们把原本输出的name字段改成了userName,达到了我们的目的。

四、对象的反序列化

import java.io.IOException;

import com.fasterxml.jackson.databind.ObjectMapper;

public class JSONTest {
    public static void main(String[] args) throws IOException {
        // 对象的反序列化,使用readValue方法对json字符串进行反序列化
        String jsonStr = "{\"id\":\"1002\",\"userName\":\"HuangBaoKang\"}";
        Person person = new ObjectMapper().readValue(jsonStr.getBytes(), Person.class);
        // 控制台打印输出Person [id=1002, name=HuangBaoKang]
        System.out.println(person);
    }
}

在项目各种服务使用Json数据进行通信传输时,有了@JsonProperty注解,我们可以反序列化成我们想要的对象。

你可能感兴趣的:(json,maven,json)