xieegai

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

posted on 2018-01-08 14:34  xieegai  阅读(5129)  评论(0编辑  收藏  举报