使用fastjson之前需先引入下述依赖,当前版本为1.2.75

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.75</version>
</dependency>

JSONField中的name属性用来指定JSON串中key的名称

1.@JSONField注解作用在属性(成员变量)上

import com.alibaba.fastjson.annotation.JSONField;

public class Person {

    @JSONField(name = "userName")
    private String name;

    @JSONField(name = "AGE")
    private String age;

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

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

序列化测试: 

import com.alibaba.fastjson.JSONObject;
import com.bc.model.Person;

import java.util.Date;

public class Demo {

    public static void main(String[] args){
        Person person=new Person();
        person.setName("张三");
        person.setAge("20");
        person.setDate(new Date());
        String jsonStr = JSONObject.toJSONString(person);
        System.out.println(jsonStr);
    }
}

执行上述代码,其输出结果为:

{"AGE":"20","userName":"张三"}

反序列化测试:

import com.alibaba.fastjson.JSONObject;
import com.bc.model.Person;

public class Demo {

    public static void main(String[] args){
        String jsonStr="{\"AGE\":\"20\",\"userName\":\"张三\"}";
        Person person = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), Person.class);
        System.out.println("json to bean:" + person.getName());
    }
}

执行上述代码,其输出结果为:

json to bean:张三

@JSONField作用在Field时,其name不仅定义了输出的名称,同时也定义了输入key的名称

2.@JSONField注解作用在方法上

import com.alibaba.fastjson.annotation.JSONField;

public class Person {

    private String name;

    private String age;

    // 针对的是序列化操作
    @JSONField(name = "userName")
    public String getName() {
        return name;
    }

    // 针对的是反序列化操作
    @JSONField(name = "userName")
    public void setName(String name) {
        this.name = name;
    }

    @JSONField(name = "AGE")
    public String getAge() {
        return age;
    }

    @JSONField(name = "AGE")
    public void setAge(String age) {
        this.age = age;
    }
}
import com.alibaba.fastjson.JSONObject;
import com.bc.model.Person;

public class Demo {

    public static void main(String[] args){
        // 序列化
        Person person=new Person();
        person.setName("张三");
        person.setAge("20");
        String jsonStr = JSONObject.toJSONString(person);
        System.out.println(jsonStr);

        // 反序列化
        // String jsonStr="{\"AGE\":\"20\",\"userName\":\"张三\"}";
        // Person person = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), Person.class);
        // System.out.println("json to bean:" + person.getName());
    }
}

执行上述代码,其输出结果为:

{"AGE":"20","userName":"张三"}

fastjson在进行操作时,是根据getter和setter的方法进行的,并不是依据Field进行

3.@JSONField注解中的format属性

 format属性用于规定序列化和反序列化时成员变量的日期格式 

import com.alibaba.fastjson.annotation.JSONField;
import java.util.Date;

public class Person {

    private String name;

    private String age;

    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date date;

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

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

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }
}
import com.alibaba.fastjson.JSONObject;
import com.bc.model.Person;

import java.util.Date;

public class Demo {

    public static void main(String[] args){
        // 序列化
        Person person=new Person();
        person.setName("张三");
        person.setAge("20");
        person.setDate(new Date());
        String jsonStr = JSONObject.toJSONString(person);
        System.out.println(jsonStr);
    }
}

执行上述代码,其输出结果为:

{"age":"20","date":"2022-06-21 09:52:37","name":"张三"}

4.@JSONField注解中的ordinal属性

ordinal属性用于规定序列化时字段的顺序

import com.alibaba.fastjson.annotation.JSONField;

public class Person {

    @JSONField(ordinal = 1)
    private String name;

    @JSONField(ordinal = 2)
    private String age;

    @JSONField(ordinal = 3)
    private String sex;

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}
import com.alibaba.fastjson.JSONObject;
import com.bc.model.Person;

public class Demo {

    public static void main(String[] args){
        // 序列化
        Person person=new Person();
        person.setName("张三");
        person.setAge("20");
        person.setSex("男");
        String jsonStr = JSONObject.toJSONString(person);
        System.out.println(jsonStr);
    }
}

执行上述代码,其输出结果为:

{"name":"张三","age":"20","sex":"男"}

5.@JSONField注解中的serialize属性

serialize属性其取值为false时表示该字段不进行序列化,就是转化为json字符串时不生成该字段

import com.alibaba.fastjson.annotation.JSONField;
import java.util.Date;

public class Person {

    private String name;

    private String age;

    // 指定字段不进行序列化,就是转化为json字符串时不生成该字段
    @JSONField(serialize=false)
    private Date date;

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

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

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }
}
import com.alibaba.fastjson.JSONObject;
import com.bc.model.Person;

import java.util.Date;

public class Demo {

    public static void main(String[] args){
        // 序列化
        Person person=new Person();
        person.setName("张三");
        person.setAge("20");
        person.setDate(new Date());
        String jsonStr = JSONObject.toJSONString(person);
        System.out.println(jsonStr);
    }
}

执行上述代码,其输出结果为:

{"age":"20","name":"张三"}
Logo

鸿蒙生态一站式服务平台。

更多推荐