@JSONField注解的使用

@JSONField注解的使用JSONField 注解可以用在方法 method 属性 field 以及方法中的参数 parameter 上 JSONField 中的 name 属性用来指定 JSON 串中 key 的名称 Demo JSONField 作用在 Field 时 其 name 不仅定义了输入 key 的名称 同时也定义了输出的名称 publicclassP JSONField name name

@JSONField注解可以用在方法(method),属性(field)以及方法中的参数(parameter)上。JSONField中的name属性用来指定JSON串中key的名称。

Demo:

@JSONField作用在Field时,其name不仅定义了输入key的名称,同时也定义了输出的名称。 public class Person { 
     @JSONField(name = "name") // 注意观察生成的JSON串中name和age的区别 private String name; @JSONField(name = "AGE") private String age; public String getName() { 
     return name; } public void setName(String name) { 
     this.name = name; } public String getAge() { 
     return age; } public void setAge(String age) { 
     this.age = age; } } @JSONField也可以直接作用在get或set方法上 @JSONField(name = "name") public String getName() { 
     return name; } @JSONField(name = "name") public void setName(String name) { 
     this.name = name; } @JSONField(name = "AGE") public String getAge() { 
     return age; } @JSONField(name = "AGE") public void setAge(String age) { 
     this.age = age; } PS:FastJson在进行操作时,是根据getter和setter的方法进行的,并不是依据Field进行。 
public class PersonTest { 
     private Person person; / * 初始化对象 */ @Before public void setUp() { 
     person = new Person(); person.setName("gyl"); person.setAge("20"); } @Test public void test() { 
     String jsonStr = JSONObject.toJSONString(person); System.out.println("bean to json:" + jsonStr); person = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), Person.class); System.out.println("json to bean:" + person.getName()); } } 
Output: bean to json:{"AGE":"20","name":"gyl"} json to bean:gyl 

JSONField默认支持的类型

public @interface JSONField { 
     int ordinal() default 0; String name() default ""; String format() default ""; boolean serialize() default true; boolean deserialize() default true; SerializerFeature[] serialzeFeatures() default { 
    }; Feature[] parseFeatures() default { 
    }; String label() default ""; boolean jsonDirect() default false; Class<?> serializeUsing() default Void.class; Class<?> deserializeUsing() default Void.class; String[] alternateNames() default { 
    }; boolean unwrapped() default false; } 

format规定日期格式

@JSONField(format="yyyy-MM-dd HH:mm:ss") private Date date; 

ordinal规定字段的顺序

@JSONField(ordinal = 3) private int f0; @JSONField(ordinal = 2) private int f1; @JSONField(ordinal = 1) private int f2; fastjson序列化⼀个java bean,是根据fieldName的字母序进⾏序列的你可以通过ordinal指定字段的顺序。 

serialize/deserialize指定字段不序列化

@JSONField(serialize=false) public Date date; 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204263.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午8:38
下一篇 2026年3月19日 下午8:38


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号