@JsonAlias,@JsonProperty,@JSONField总结

1、@JsonAlias注解

@JsonAlias注解,实现:json转模型时,使json中的特定key能转化为特定的模型属性;但是模型转json时, 对应的转换后的key仍然与属性名一致,见:上图示例中的name字段的请求与响应。

@JsonAlias(value={"Name",""name123})
private String name;

此时,json字符串转换为模型时,json中key为Name或为name123或为name的都能识别。

2、@JsonProperty注解

JsonProperty是位于jackson包里面,搭配ObjectMapper().writeValueAsString(实体类)方法使用,将实体类转换成字符串。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>版本号</version>
</dependency>

搭配ObjectMapper().readValue(字符串)方法使用,将字符串转换成实体类。
@JsonProperty注解,实现:json转模型时,使json中的特定key能转化为指定的模型属性;同样的,模
型转json时,对应的转换后的key为指定的key,见:示例中的motto字段的请求与响应。
以下图进一步说明:

@JsonProperty("MOTTO")
private String motto;

此时,json字符串转换为模型时,key为MOTTO的能识别,但key为motto的不能识别。

2、@JSONField 注解

JSONField是位于fastjson包里面,搭配JSON.toJSONString(实体类)方法使用,将实体类转换成json字符串。搭配JSON.parseObject(字符串,实体类.class)方法使用,将字符串转换成实体类。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>版本号</version>
</dependency>
@JSONField(name="JSONFieldName")
private String name;

测试:

{“JSONFieldName”:“shiyu”,“age”:22,“sex”:“man”}

FieldInfo还可以配置在getter/setter方法或者字段上。例如:

public class A {
    private int id;

    @JSONField(name="ID")
    public int getId() {return id;}
    @JSONField(name="ID")
    public void setId(int value) {this.id = id;}
}

使format配置日期格式化

比如我们有一个字段在数据库是datetime类型的,但是我们又需传给前端“yyyy-MM-dd”这样的格式,这时我们不需要再代码里面去手动用simpledateformat或者DateTimeFormatter去转,这样很转很麻烦的。
我们可以使用fasonjson的@JSONField注解,来format成任意我们想要的格式。

public class A {
    // 配置date序列化和反序列使⽤yyyy-MM-dd⽇期格式
    @JSONField(format="yyyy-MM-dd")
    public Date date;
}

使ordinal指定字段的顺序

public static class VO {
    @JSONField(ordinal = 3)
    private int f0;
    @JSONField(ordinal = 2)
    private int f1;
    @JSONField(ordinal = 1)
    private int f2;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值