阿里巴巴fastjson的简单使用

发布时间 2023-04-26 21:19:12作者: 向大海

一、API使用

准备阶段

1、准备实体类

import lombok.Data;

@Data
public class FastJsonEntity {
    private String name;
    private Integer age;
    private String sex;

}

2、配置maven依赖 lombok

<!--lombok-->
<dependency>
       <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.24</version>
</dependency>

3、配置maven依赖 fastjson

<!--fastJson-->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.76</version>
</dependency>

简单使用与结果演示

1、将java对象转换成json字符串,支持各种java基本类型和java对象

案例一:java对象

FastJsonEntity fastJsonEntity = new FastJsonEntity();
fastJsonEntity.setName("小明");
fastJsonEntity.setAge(22);
fastJsonEntity.setSex("男");
String s
= JSON.toJSONString(fastJsonEntity); System.out.println(s);

运行结果:

运行结果: {"age":22,"name":"小明","sex":"男"}

 

案例二:集合

        List<FastJsonEntity> list = new ArrayList<>();

        for (int i=0;i<=3;i++){
            FastJsonEntity fastJsonEntity = new FastJsonEntity();
            fastJsonEntity.setName("小明"+i);
            fastJsonEntity.setAge(22+i);
            fastJsonEntity.setSex("男"+i);

            list.add(fastJsonEntity);
        }

        
        String s = JSON.toJSONString(list);
        
        System.out.println(s);

运行结果:

[
    {
        "age":22,
        "name":"小明0",
        "sex":"男0"
    },
    {
        "age":23,
        "name":"小明1",
        "sex":"男1"
    },
    {
        "age":24,
        "name":"小明2",
        "sex":"男2"
    },
    {
        "age":25,
        "name":"小明3",
        "sex":"男3"
    }
]

 

2、将JSON字符串转换成java对象

案例一:

String jsonString = "{\"age\":22,\"name\":\"小明\",\"sex\":\"男\"}";
FastJsonEntity fastJsonEntity = JSON.parseObject(jsonString, FastJsonEntity.class);
System.out.println(fastJsonEntity);
System.out.println(fastJsonEntity.getName());
System.out.println(fastJsonEntity.getAge());
System.out.println(fastJsonEntity.getSex());

运行结果

运行结果: FastJsonEntity(name=小明, age=22, sex=男)
运行结果: 小明
运行结果: 22
运行结果: 男

 

3、将JSON字符串转成JSONObject

String jsonString = "{\"age\":22,\"name\":\"小明\",\"sex\":\"男\"}";
Object parse = JSON.parse(jsonString);
System.out.println(parse);

运行结果:

运行结果: {"age":22,"name":"小明","sex":"男"}

 

 

 

 

二、相关注解

注解名称 作用范围 属性值
@JSONField 方法、字段、参数 ordinal:控制字段的输出顺序
    name:指定字段的名称
    format:指定字段的输出格式,只对日期格格式有用
    serialize:指定字段是否序列化
    deserialize:指定字段是否反序列化
    serialzeFeatures
    parseFeatures
    label
    jsonDirect:当你有一个字段是字符串类型,里面是json格式数据,你希望直接输入,而不是经过转义之后再输出。
    serializeUsing
    deserializeUsing
    alternateNames:反序列化时配置多个不同的字段名称
    unwrapped
    defaultValue

使用案例

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.util.Date;

@Data
public class FastJsonEntity {
    @JSONField(name="name",ordinal=1)
    private String name;

    @JSONField(name="name",ordinal=2,serialize=true)
    private Integer age;

    private String sex;

    @JSONField(name="name",ordinal=3,format="dd/MM/yyyy")
    private Date bir;

    @JSONField(name="name",ordinal=4,format="ddMMyyyy")
    private Date dateOfBirth;
}

 

三、开发中自定义工具类

   /**
     * Object 转 JSON
     */public String a(Object o) {
        if (o instanceof Integer || o instanceof Long || o instanceof Float || o instanceof Double || o instanceof String || o instanceof Boolean) {
            return String.valueOf(o);
        }
        return JSON.toJSONString(o);
    }

    /**
     * JSON 转 Object
     */public <T> T b(String json, Class<T> clazz) {
        return JSON.parseObject(json, clazz);
    }

    /**
     * JSON 转 Object List
     */public <T> List<T> c(String value, Class<T> tClass) {
        return JSON.parseArray(value, tClass);
    }