FastJson2.0介绍和使用

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);

后续补充。。。。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈行动派

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值