在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    fastjson 解析 阿里最新JSON解析庫發(fā)布,性能碾壓fastjson和jackson

    《開源精選》是我們分享Github、Gitee等開源社區(qū)中優(yōu)質(zhì)項(xiàng)目的欄目,包括技術(shù)、學(xué)習(xí)、實(shí)用與各種有趣的內(nèi)容。本期推薦的是一個阿里開源的高性能的JSON庫——FASTJSON2。

    fastjson 解析 阿里最新JSON解析庫發(fā)布,性能碾壓fastjson和jackson

    fastjson2是FASTJSON項(xiàng)目的重要升級,目標(biāo)是為下一個十年提供一個高性能的JSON庫。通過同一套API,

    支持JSON/JSONB兩種協(xié)議支持全量解析和部分解析支持Java服務(wù)端、客戶端Android、大數(shù)據(jù)場景支持Kotlin支持Android (2.0.3.android)支持Graal Native-Image (2.0.3.graal)

    使用準(zhǔn)備

    1 添加依賴

    Maven:

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

    Gradle:

    dependencies {implementation 'com.alibaba.fastjson2:fastjson2:2.0.3'}

    2 其他模塊

    Fastjson v1兼容模塊

    如果原來使用fastjson 1.2.x版本,可以使用兼容包,兼容包不能保證100%兼容,請仔細(xì)測試驗(yàn)證,發(fā)現(xiàn)問題請及時反饋。

    Maven:

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

    Gradle:

    dependencies {implementation 'com.alibaba:fastjson:2.0.3'}

    kotlin集成模塊

    如果項(xiàng)目使用Kotlin,可以使用fastjson-kotlin模塊,使用方式上采用kotlin的特性。

    Maven:

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

    Gradle:

    dependencies {implementation("com.alibaba.fastjson2:fastjson2-kotlin:2.0.3")}

    簡單使用

    在fastjson v2中,package和1.x不一樣,是com.alibaba.fastjson2。如果你之前用的是fastjson1,大多數(shù)情況直接更包名就即可。

    1 將JSON解析為JSONObject

    String text = "...";JSONObject data = JSON.parseObject(text);byte[] bytes = ...;JSONObject data = JSON.parseObject(bytes);

    2 將JSON解析為JSONArray

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

    3 將JSON解析為Java對象

    String text = "...";User data = JSON.parseObject(text, User.class);

    4 將Java對象序列化為JSON

    Object data = "...";String text = JSON.toJSONString(data);byte[] text = JSON.toJSONbytes(data);

    5 使用JSONObject、JSONArray

    獲取簡單屬性

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

    讀取JavaBean

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

    轉(zhuǎn)為JavaBean

    JSONArray array = ...JSONObject obj = ...User user = obj.toJavaObject(User.class);List<User> users = array.toJavaList(User.class);

    6 將JavaBean對象序列化為JSON

    class User { public int id; public String name;}User user = new User();user.id = 2;user.name = "FastJson2";String text = JSON.toJSONString(user);byte[] bytes = JSON.toJSONBytes(user);

    序列化結(jié)果

    {"id" : 2,"name" : "FastJson2"}

    進(jìn)階使用

    1 使用JSONB

    將JavaBean對象序列化JSONB

    User user = ...;byte[] bytes = JSONB.toBytes(user);byte[] bytes = JSONB.toBytes(user, JSONWriter.Feature.BeanToArray);

    將JSONB數(shù)據(jù)解析為JavaBean

    byte[] bytes = ...User user = JSONB.parseObject(bytes, User.class);User user = JSONB.parseObject(bytes, User.class, JSONReader.Feature.SupportBeanArrayMapping);

    2 使用JSONPath

    使用JSONPath讀取部分?jǐn)?shù)據(jù)

    String text = ...;JSONPath path = JSONPath.of("$.id"); // 緩存起來重復(fù)使用能提升性能JSONReader parser = JSONReader.of(text);Object result = path.extract(parser);

    使用JSONPath讀取部分byte[]的數(shù)據(jù)

    byte[] bytes = ...;JSONPath path = JSONPath.of("$.id"); // 緩存起來重復(fù)使用能提升性能JSONReader parser = JSONReader.of(bytes);Object result = path.extract(parser);

    使用JSONPath讀取部分byte[]的數(shù)據(jù)

    byte[] bytes = ...;JSONPath path = JSONPath.of("$.id"); // 緩存起來重復(fù)使用能提升性能JSONReader parser = JSONReader.ofJSONB(bytes); // 注意這里使用ofJSONB方法Object result = path.extract(parser);

    —END—

    開源協(xié)議:Apache2.0

    開源地址:https://github.com/alibaba/fastjson2

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月28日 15:11
    下一篇 2022年6月28日 15:11

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時間:周一至周五,10:30-18:30,節(jié)假日休息