当前位置:网站首页>fastjson中的@JSONField注解

fastjson中的@JSONField注解

2022-06-23 05:36:00 y_bccl27

使用fastjson之前需先引入下述依賴,當前版本為1.2.75

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

JSONField中的name屬性用來指定JSON串中key的名稱

[email protected]注解作用在屬性(成員變量)上

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的名稱

[email protected]注解作用在方法上

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進行

[email protected]注解中的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":"張三"}

[email protected]注解中的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":"男"}

[email protected]注解中的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":"張三"}
原网站

版权声明
本文为[y_bccl27]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/174/202206230343256695.html