com.alibaba.fastjson的@JSONField标签

使用场景:字段和方法

1、字段:根据@JSONField(name=“XXX”) 中的name 对string转换为类时name中的描述就是转换后的字段名称

2、方法:在set方法前和在get方法前

当JSON.parseObject(str,class)方法被调用时,set方法被调用,方法上面的@JSONField(name="XXX")中的XXX属性,将json中的XXXkey被赋值到set方法描述的属性中。

当JSON.toJSONString(dto)方法被调用时,get方法被调用,方法上面的@JSONField(name="XXX")中的XXX属性,就是得到的jsonString中的属性的key。

 

例子如下:

package json.dto;

import com.alibaba.fastjson.annotation.JSONField;

import java.util.Date;

/**
 * @Auther: liyongli
 * @Date: 2018/8/15 14:02
 * @Description:
 */
public class DepositDTO {
    @JSONField(ordinal = 1)
    private String id;
    @JSONField(ordinal = 2)
    private Integer depositAmount;
    @JSONField(ordinal = 3)
    private Date createTime;
    @JSONField(ordinal = 4,name = "delete_flag")
    private String deleteFlag;

    public String getId() {
        return id;
    }

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

    @JSONField(name = "amount")
    public Integer getDepositAmount() {
        System.out.println("get 方法被调用");
        return depositAmount;
    }


    @JSONField(name = "depositamt")
    public void setDepositAmount(Integer depositAmount) {
        System.out.println("set 方法被调用");
        this.depositAmount = depositAmount;
    }

    @JSONField(format = "YYYY-MM-dd HH:mm:ss")
    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public String getDeleteFlag() {
        return deleteFlag;
    }

    public void setDeleteFlag(String deleteFlag) {
        this.deleteFlag = deleteFlag;
    }


    @Override
    public String toString() {
        return super.toString();
    }
}

 

package json;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import json.dto.DepositDTO;

import java.util.Date;

/**
 * @Auther: liyongli
 * @Date: 2018/8/15 14:05
 * @Description:
 */
public class JsonTest {


    public static void main(String[] args) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("id",1);
        jsonObject.put("depositamt", 100);
        jsonObject.put("deleteflag", 0);
        jsonObject.put("name", "liyongli");
        jsonObject.put("create_time", new Date());
        System.out.println(jsonObject);//同jsonObject.toString(),jsonObject.toJSONString()
        System.out.println("调用JSON.parseObject方法时:");
        DepositDTO depositDTO = JSON.parseObject(jsonObject.toString(),DepositDTO.class);//set方法被调用,用string中的key和@JSONFIELD中的那么对应
        System.out.println(depositDTO);

//
//        DepositDTO depositDTO1 = JSONObject.parseObject(jsonObject.toJSONString(), DepositDTO.class);
//        System.out.println(depositDTO1);

        System.out.println("调用JSON.toJSONString方法时:");
        System.out.println(JSON.toJSONString(depositDTO));//get方法被调用,将被转换成JSONField标签中的那么值


    }
}

运行结果:

{"deleteflag":0,"create_time":1534317037530,"depositamt":100,"name":"liyongli","id":1}
调用JSON.parseObject方法时:
set 方法被调用
json.dto.DepositDTO@77afea7d
调用JSON.toJSONString方法时:
get 方法被调用
{"amount":100,"id":"1","createTime":"2018-08-15 15:10:37","delete_flag":"0"}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Fastjson是一个Java语言编写的JSON处理库,@JSONFieldFastjson提供的注解之一。 @JSONField注解用于指示在序列化和反序列化过程中如何处理Java对象的字段。它可以应用于类的字段或者类的setter和getter方法,并提供了一些属性来自定义字段的行为。 使用@JSONField注解,可以实现以下功能: 1. 指定字段的名称:通过设置name属性,可以指定将Java对象字段序列化为JSON时的字段名称。例如: ``` @JSONField(name = "id") private int userId; ``` 以上代码将Java对象中的userId字段序列化为JSON时,字段名为"id"。 2. 排除字段:通过设置serialize属性为false,可以在序列化对象时排除这个字段。例如: ``` @JSONField(serialize = false) private String password; ``` 以上代码将在序列化对象时,忽略password字段。 3. 指定字段的格式化方式:通过设置format属性,可以指定字段序列化和反序列化时所使用的格式。例如: ``` @JSONField(format = "yyyy-MM-dd") private Date createTime; ``` 以上代码将使用"yyyy-MM-dd"格式处理createTime字段。 4. 自定义字段的序列化和反序列化逻辑:通过设置serializeUsing和deserializeUsing属性,可以指定自定义的序列化和反序列化器来处理字段。例如: ``` @JSONField(serializeUsing = CustomSerializer.class) private SomeObject someObject; ``` 以上代码将使用CustomSerializer来序列化someObject字段。 总之,@JSONFieldFastjson中一个非常有用的注解,可以通过它来控制字段的序列化和反序列化方式,实现更加灵活的JSON数据处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值