com.alibaba.fastjson的@JSONField标签

本文介绍FastJSON库中@JSONField注解的使用方法,包括字段和方法映射的具体应用场景,通过实例演示如何实现JSON字符串与Java对象之间的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用场景:字段和方法

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"}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值