当前位置: 首页 > 工具软件 > fastJSON 2 > 使用案例 >

Alibaba /热门json解析开源项目 fastjson2

应子真
2023-12-01

一、介绍

FASTJSON v2是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。通过同一套API,
GitHub地址 : https://github.com/alibaba/fastjson2

  • 支持JSON/JSONB两种协议,JSONPath是一等公民。
  • 支持全量解析和部分解析。
  • 支持Java服务端、客户端Android、大数据场景。
  • 支持kotlin

1.使用maven添加依赖

<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.3</version>
</dependency>

2. fastjson v1 兼容模块

如果原来使用fastjson 1.2.x版本,可以使用兼容包,兼容包不能保证100%兼容,请仔细测试验证,发现问题请及时反馈。

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

二、简单使用

1.创建实体类对象

package com.janson.demo.fastjson;

import lombok.Data;

/**
 * @Author Janson
 * @Date 2022/5/16 9:05
 * @Version 1.0
 */
@Data
public class DemoData {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
}

2. 测试常用的三个方法 JSON.toJSONString(JavaBean),JSON.parseObject(str, DemoData.class);JSON.parseArray(str, DemoData.class);

  • 方法介绍:

    • JSON.parseObject(str, DemoData.class) 将JSON解析为JSONObject
    • JSON.parseArray(str, DemoData.class); 将JSON解析为JSONArray
    • JSON.toJSONString(JavaBean),将Java对象序列化为JSON
package com.janson.demo.fastjson;

import com.alibaba.fastjson2.JSON;
import java.util.List;
/**
 * @Author Janson
 * @Date 2022/5/16 9:03
 * @Version 1.0
 */
public class TestFastjson {
    public static void main(String[] args) {
        System.out.println("-----JSON.toJSONString()-----测试javaBean转为json字符串---------------");
        DemoData demoData = new DemoData();
        demoData.setAge(18);
        demoData.setId(11108);
        demoData.setName("法外狂徒张三");
        demoData.setSex("男"); //
        String stoJSONString = JSON.toJSONString(demoData);
        System.out.println(stoJSONString);
        System.out.println("-----------测试结束--------------\n");

        System.out.println("-----JSON.parseObject(s, DemoData.class);-----测试json字符串转为javaBean---------------");
        DemoData demoDataparseObject = JSON.parseObject(stoJSONString, DemoData.class);
        System.out.println(demoDataparseObject.getAge() + "  "  + demoDataparseObject.getName()+" " + demoDataparseObject.getId() + " "+demoDataparseObject.getSex());
        System.out.println("-----------测试结束--------------\n");

        System.out.println("-----JSON.parseArray(str, DemoData.class);-----测试一组json字符串转为javaBean的集合(list)---------------");
        String str = "[{\"age\":18,\"id\":11108,\"name\":\"法外狂徒张三\",\"sex\":\"男\"},{\"age\":80,\"id\":188808,\"name\":\"法外狂徒川普\",\"sex\":\"未知\"}]";
        List<DemoData> demoDataparseArray = JSON.parseArray(str, DemoData.class);
        int i = 0;
        for (DemoData demoDataList: demoDataparseArray) {
            System.out.println("集合索引:" + i+ "集合数据" + demoDataList);
            i++;
        }
        System.out.println("-----------测试结束--------------");
    }
}

三、进阶使用 使用JSONB (JSONB 指 JSON Byte[])

3.1 将JavaBean对象序列化JSONB =>

  • 方法 JSONB.toBytes(JavaBean)
  • 将JSONB数据解析为JavaBean :JSONB.parseObject(bytes,DemoData.class)
System.out.println("-----JSONB.toBytes()-----测试javaBean序列化JSONB,字节数组--------------");
DemoData demoData1 = new DemoData();
demoData1.setAge(18);
demoData1.setId(11108);
demoData1.setName("法外狂徒张三");
demoData1.setSex("男");
byte[] bytes = JSONB.toBytes(demoData1);
System.out.println(bytes.length);
for (int b = 0;b<bytes.length;b++) {
    System.out.println( b +"  "+ bytes[b]);
}
System.out.println("-----------测试结束--------------\n");

System.out.println("-----JSONB.parseObject(bytes,DemoData.class)-----测试JSONB解析为javaBean--------------");
DemoData demoDataJSONB = JSONB.parseObject(bytes,DemoData.class);
System.out.println(demoDataJSONB.getId() + "  "+ demoDataJSONB.getName() + " "
        + demoDataJSONB.getAge() + "  "+demoDataJSONB.getSex());
System.out.println("-----------测试结束--------------\n");


``

 类似资料: