zoukankan      html  css  js  c++  java
  • fastjson使用-- @JSONField使用(转)

    @JSONField可以配置到字段和方法上,那不同的配置有什么不同呢?下面我们就来看看具体配置到不同的方法上。

    我们在创建实体类的时候,都要求属性必须创建get和set方法,否则fastjson将不会进行识别,下面我们看看把@JSONField配置到具体的get和set方法上

    /**
     * @Title: getDate 
     * @Description: 配置序列化的时候,日期序列化为startDate
     * @return Date
     */
    @JSONField(name = "startDate")
    public Date getDate() {
        return date;
    }
        
    /**
     * @Title: setDate 
     * @Description: 配置反序列化的时候,以endDate去匹配
     * @param date
     * @return void
     */
    @JSONField(name = "endDate")
    public void setDate(Date date) {
        this.date = date;
    }
        
    /**
     * @Title: getId 
     * @Description: 配置序列化的时候,不序列化id
     * @return int
     */
    @JSONField(serialize = false)
    public int getId() {
        return id;
    }
        
    /**
     * @Title: setId 
     * @Description: 配置反序列化的时候,不反序列化id
     * @return void
     */
    @JSONField(deserialize = false)
    public void setId(int id) {
        this.id = id;
    }

    具体的代码,就是上面的,挺简单的。下面来看看结果:

    {"age":25,"name":"LiLei","sex":"男","startDate":1451985134688}
    User [id=0, name=LiLei, age=25, sex=男, date=Tue Jan 05 17:04:47 CST 2016

    我们看到id既没有序列化也没有反序列化,date字段序列化的时候变为了startDate

    我们再来看看下面的代码看看结果跟上面做个比较:

    // 反序列化
    String jsonStr = "{"id":10,"age":25,"name":"LiLei","sex":"男","startDate":1451984687404}";
    // @JSONField配置了,不反序列化id,date的匹配name为endDate
    Uo2 uo = JSON.parseObject(jsonStr, Uo2.class);
    System.out.println(uo.toString());

    再来看看结果:

    User [id=0, name=LiLei, age=25, sex=男, date=null]

    这个时候我们看到没有识别到date,因为我们在date字段的set方法上配置了@JSONField(name = "endDate")所以其在识别的时候,是通过endDate去识别key的,而我们的json数据里根本没有endDate这个key,所以没法识别。

    根据上面我们可以总结出一个结论:

    1.序列化(JavaBean --> json)时配置到对应字段的get()方法上

    2.反序列化(json --> JavaBean)时配置到对应字段的set()方法上

  • 相关阅读:
    Linux command: grep
    VirtualBox内Linux系统怎样与Windows共享文件夹
    Centos 安装R
    Cannot retrieve metalink for repository: epel 错误解决办法
    sed 替换换行回车
    Get and Set Column/Row Names for Data Frames
    TCGA phenotype各列的含义
    R语言 格式化数字
    qvalue: Check that you have valid p-values or use a different range of lambda
    淘宝开源的H5移动开发UI框架genie-ui
  • 原文地址:https://www.cnblogs.com/heqiyoujing/p/9459702.html
Copyright © 2011-2022 走看看