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

FastJson2.0介绍和使用

贝钧
2023-12-01

FASTJSON 2.0介绍

FASTJSON v2FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。通过同一套API

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

1、使用准备

1.1、添加依赖

fastjson v2中,groupId1.x不一样,是com.alibaba.fastjson2

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

可以在 maven.org 查看最新可用的版本。

1.2、其他模块

Fastjson v1兼容模块

如果原来使用fastjson 1.2.x版本,可以使用兼容包,兼容包不能保证100%兼容

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

Fastjson Kotlin集成模块

如果项目使用Kotlin,可以使用fastjson-kotlin模块,使用方式上采用kotlin的特性。

<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2-kotlin</artifactId>
    <version>2.0.19</version>
</dependency>

Fastjson Extension扩展模块

如果项目使用SpringFramework等框架,可以使用fastjson-extension模块,使用方式参考 SpringFramework Support

<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2-extension</artifactId>
    <version>2.0.19</version>
</dependency>

2、使用

fastjson v2中,package1.x不一样,是com.alibaba.fastjson2。如果你之前用的是fastjson1,大多数情况直接更包名就即可。

2.1、对象转JSON


    @Test
    public void test02(){
        UserModel userModel = new UserModel();
        userModel.setId(23L);
        userModel.setUserName("张三");
        System.out.println(JSON.toJSONString(userModel, JSONWriter.Feature.UseSingleQuotes));
        //结果:{"id":23,'userName':'张三'}
    }

    class UserModel {
        private Long id;

        private String userName;

        public Long getId() {
            return id;
        }

        public void setId(Long id) {
            this.id = id;
        }

        public String getUserName() {
            return userName;
        }

        public void setUserName(String userName) {
            this.userName = userName;
        }
    }

2.2 、JSON转对象

    @Test
    public void test01() {
        //TODO 这块儿很奇特,对象转JSON 我填写了用单引号,但是ID属性还是输出的双引号
        String json = "{\"id\":23,'userName':'张三'}";
        UserModel userModel = JSON.parseObject(json, UserModel.class);
    }

2.3、 将JSON解析为JSONObject

    @Test
    public void test03(){
        String json = "{\"id\":23,'userName':'张三'}";
        JSONObject data = JSON.parseObject(json);
        System.out.println(data.get("id"));
    }

2.4、将JSON解析为JSONArray

String text = "...";
JSONArray data = JSON.parseArray(text);

2.5、使用JSONObjectJSONArray

String text = "{\"id\": 2,\"name\": \"fastjson2\"}";
JSONObject obj = JSON.parseObject(text);

int id = obj.getIntValue("id");
String name = obj.getString("name");
String text = "[2, \"fastjson2\"]";
JSONArray array = JSON.parseArray(text);

int id = array.getIntValue(0);
String name = array.getString(1);

JSONArray array = ...
JSONObject obj = ...

User user = array.getObject(0, User.class);
User user = obj.getObject("key", User.class);

后续补充。。。。

 类似资料: