阿里巴巴fastjson @JSONField 注解说明

本文详细解析了阿里巴巴FastJSON库中的@JSONField注解用法,包括如何通过ordinal属性排序输出JSON字段,利用format属性进行日期格式化,及name属性为字段设置别名等高级功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阿里巴巴fastjson @JSONField 注解说明

1 介绍

1.1 依赖

​ com.alibaba ​ fastjson ​ 1.2.47

1.2 @jsonField注解

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
public @interface JSONField {
    int ordinal() default 0;

    String name() default "";

    String format() default "";

    boolean serialize() default true;

    boolean deserialize() default true;
 	//其他省略
}

1.3 @jsonField注解常用属性

name : 给字段起别名

ordinal :用来排序 输出json字符串中key属性的先后顺序 可以用 @JSONType (orders={})来代替

format : 用来日期格式化

serialize :指定字段不序列化

deserialize :指定字段不序列化

2 示例

2.1 User类

public class User {
String a;
String b;
String c;
String d;
String z;
//get  set 省略
}

2.2 json字符串中字段先后顺序排序

我们来输出一下

User  user =new User();
user.setA("a");
user.setB("b");
user.setC("c");
user.setD("d");
user.setZ("e");

System.out.println(JSON.toJSONString(user));

结果:

{"a":"a","b":"b","c":"c","d":"d","z":"e"}

我们现在想要这样子的格式:z,a,b,c,d,e

此时采用注解

public class User {
@JSONField(ordinal = 1)
String a;
@JSONField(ordinal = 2)
String b;
@JSONField(ordinal = 3)
String c;
@JSONField(ordinal = 4)
String d;
@JSONField(ordinal = 0)    // 默认是0  可以不加
String z;
//get  set 省略
}

输出

{"z":"e","a":"a","b":"b","c":"c","d":"d"}

或者我们可以采用另一个注解 注解在类上面 @JSONType(orders = {“z”,“a”,“b”,“c”,“d”})

@JSONType(orders = {"z","a","b","c","d"})
public class User {
//省略
}

2.3 format 和 name 一起使用

新增字段 Date 字段 ,然后 格式化,顺便给字段 z 起别名 z_name

    @JSONField(ordinal = 2)
    String a;
    @JSONField(ordinal = 3)
    String b;
    @JSONField(ordinal = 4)
    String c;
    @JSONField(ordinal = 5)
    String d;
    @JSONField(ordinal = 1 , name = "z_name")
    String z;

    @JSONField(ordinal = 0 ,format = "yyyy-MM-dd")
    Date z_date = new Date();
	//get set 省略

输出

{"z_date":"2018-12-20","z_name":"e","a":"a","b":"b","c":"c","d":"d"}

serialize

public class A {
      @JSONField(serialize=false)
      public Date date;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TizzyGoodhealth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值