fastJson注解@JSONField使用的一个实例

Posted Fight With Me!!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fastJson注解@JSONField使用的一个实例相关的知识,希望对你有一定的参考价值。

1.实体类

package jsonArrayjsonObject.cn;

import java.io.Serializable;
import java.util.Date;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.SerializerFeature;

public class User implements Serializable{

    private static final long serialVersionUID = 1L;

    // 配置序列化和反序列化的顺序,1.2.42以上版本支持。默认是以fieldName的字母序进行序列化的
    @JSONField(ordinal = 0)
    private Long id;
    
    @JSONField(ordinal = 1, name = "na")
    private String name;
    
    // 序列化与反序列化,默认均为true
    @JSONField(ordinal = 2, serialize = false, deserialize = false)
    private Integer age;
    
    // 默认序列化规则是当字段值为null时,是不序列化该字段的。当设置规则后,value为null时,依然会把它的值序列化出来
    @JSONField(ordinal = 3, serialzeFeatures = SerializerFeature.WriteMapNullValue)
    private String address;
    
    // 指定时间格式
    @JSONField(ordinal = 4, format = "yyyy-MM-dd  HH:mm:ss")
    private Date birthDate;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Date getBirthDate() {
        return birthDate;
    }

    public void setBirthDate(Date birthDate) {
        this.birthDate = birthDate;
    }
    
}

2.测试类

package jsonArrayjsonObject.cn;

import java.util.Date;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;

public class Test {

    public static void main(String[] args) {
        test1();
    }
    
    // 测试SimplePropertyPreFilter 和 JsonField 注解
    static void test1(){
        User user = new User();
        user.setId(1L);
        user.setAge(12);
        user.setName("zhangsan");
        user.setBirthDate(new Date());
        
        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(User.class, "na", "address");
        
        String jsonString1 = JSON.toJSONString(user);
        String jsonString2 = JSON.toJSONString(user, filter);
        System.out.println(jsonString1);
        System.out.println(jsonString2);
    }
}

3.结果

{"id":1,"na":"zhangsan","address":null,"birthDate":"2018-01-08  14:24:28"}
{"na":"zhangsan","address":null}

 4.参考

关于@JsonField的name属性详解见:http://www.cnblogs.com/softidea/p/5681928.html

以上是关于fastJson注解@JSONField使用的一个实例的主要内容,如果未能解决你的问题,请参考以下文章

fastjson的@JSONField注解

FastJson中@JSONField注解使用

源码分析之FastJson全局配置日期格式导致@JSONField(format = "yyyy-MM-dd")注解失效

fastjson简单使用demo,@JSONField注解属性字段上与setget方法上。实体类toString(),实体类转json的区别;_下划线识别

@JSONField注解的使用

fastJson的@JSONField和jackson的@JsonProperty使用