最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java fastjson2 解析JSON用法詳解

 更新時(shí)間:2025年02月11日 10:26:03   作者:風(fēng)_流沙  
Fastjson2是Fastjson的升級(jí)版,提供了更好的性能和擴(kuò)展性,它支持多種方式解析JSON數(shù)據(jù),包括將JSON字符串轉(zhuǎn)換為Java對(duì)象、嵌套的JSON對(duì)象和數(shù)組,以及轉(zhuǎn)換成Map或List,本文介紹Java fastjson2 解析JSON用法,感興趣的朋友一起看看吧

Fastjson2Fastjson 的升級(jí)版本,提供了更好的性能和擴(kuò)展性,同時(shí)也在 API 和功能上做了很多改進(jìn)。使用 Fastjson2 解析 JSON 數(shù)據(jù)非常簡(jiǎn)單,支持多種方式來(lái)解析 JSON 字符串、嵌套 JSON 對(duì)象和數(shù)組、以及轉(zhuǎn)換成 Java 對(duì)象。下面詳細(xì)介紹 Fastjson2 的常見(jiàn) JSON 解析用法。

1. 引入 Fastjson2 依賴

在使用 Fastjson2 之前,確保項(xiàng)目中包含相應(yīng)的依賴。

Maven 依賴

<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.31</version> <!-- 使用最新版本 -->
</dependency>

Gradle 依賴

implementation 'com.alibaba.fastjson2:fastjson2:2.0.31'

2. JSON 解析

2.1 解析 JSON 字符串為 Java 對(duì)象

Fastjson2 使用 JSON.parseObject() 方法將 JSON 字符串轉(zhuǎn)換為 Java 對(duì)象。

示例:將 JSON 字符串解析為 Java 對(duì)象

import com.alibaba.fastjson2.JSON;
public class Fastjson2Example {
    public static void main(String[] args) {
        String jsonString = "{\"name\":\"John\",\"age\":25}";
        // 解析 JSON 字符串為 Java 對(duì)象
        Person person = JSON.parseObject(jsonString, Person.class);
        System.out.println(person.getName());  // 輸出: John
        System.out.println(person.getAge());   // 輸出: 25
    }
}
class Person {
    private String name;
    private int age;
    // Getters and Setters
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}

2.2 解析嵌套的 JSON 對(duì)象

Fastjson2 可以直接解析嵌套的 JSON 對(duì)象。你可以通過(guò) getJSONObject() 獲取嵌套的 JSONObject,然后再繼續(xù)解析它。

示例:解析嵌套的 JSON 對(duì)象

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
public class Fastjson2Example {
    public static void main(String[] args) {
        String jsonString = "{\"name\":\"John\",\"address\":{\"city\":\"Anytown\",\"street\":\"123 Main St\"}}";
        // 解析 JSON 字符串為 JSONObject
        JSONObject jsonObject = JSON.parseObject(jsonString);
        // 獲取嵌套的 JSON 對(duì)象 (address)
        JSONObject address = jsonObject.getJSONObject("address");
        String city = address.getString("city");
        String street = address.getString("street");
        System.out.println("City: " + city);      // 輸出: Anytown
        System.out.println("Street: " + street);  // 輸出: 123 Main St
    }
}

2.3 解析 JSON 數(shù)組

Fastjson2 也可以直接將 JSON 數(shù)組字符串解析為 JSONArray。你可以通過(guò) parseArray()parseObject() 方法來(lái)處理數(shù)組。

示例:解析 JSON 數(shù)組

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
public class Fastjson2Example {
    public static void main(String[] args) {
        String jsonArrayString = "[{\"name\":\"John\",\"age\":25}, {\"name\":\"Jane\",\"age\":28}]";
        // 將 JSON 數(shù)組解析為 List
        JSONArray jsonArray = JSON.parseArray(jsonArrayString);
        // 遍歷 JSON 數(shù)組并解析每個(gè)對(duì)象
        for (int i = 0; i < jsonArray.size(); i++) {
            Person person = jsonArray.getObject(i, Person.class);
            System.out.println(person.getName() + " - " + person.getAge());
        }
    }
}

2.4 解析 JSON 字符串為 Map

如果你不需要將 JSON 解析為特定的 Java 對(duì)象,可以直接解析為 MapList。

示例:將 JSON 解析為 Map

import com.alibaba.fastjson2.JSON;
import java.util.Map;
public class Fastjson2Example {
    public static void main(String[] args) {
        String jsonString = "{\"name\":\"John\",\"age\":25}";
        // 將 JSON 解析為 Map
        Map<String, Object> map = JSON.parseObject(jsonString, Map.class);
        // 輸出 Map 內(nèi)容
        System.out.println(map);  // 輸出: {name=John, age=25}
    }
}

2.5 解析 JSON 數(shù)據(jù)時(shí)的類型轉(zhuǎn)換

Fastjson2 支持復(fù)雜的類型轉(zhuǎn)換。你可以將 JSON 解析為 List、Map、以及任意的 Java 類型。

示例:JSON 轉(zhuǎn)換為 ListMap

import com.alibaba.fastjson2.JSON;
import java.util.List;
import java.util.Map;
public class Fastjson2Example {
    public static void main(String[] args) {
        String jsonArrayString = "[{\"name\":\"John\",\"age\":25}, {\"name\":\"Jane\",\"age\":28}]";
        // 將 JSON 數(shù)組字符串解析為 List
        List<Map<String, Object>> personList = JSON.parseArray(jsonArrayString, Map.class);
        System.out.println(personList);  // 輸出: [{name=John, age=25}, {name=Jane, age=28}]
    }
}

3. 高級(jí)功能

3.1 使用 JSONPath 從 JSON 中提取數(shù)據(jù)

Fastjson2 提供了 JSONPath 功能,支持復(fù)雜的查詢操作,類似于 XPath 的功能??梢允褂?JSONPath.eval() 來(lái)提取 JSON 數(shù)據(jù)。

示例:使用 JSONPath 提取 JSON 數(shù)據(jù)

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONPath;
public class Fastjson2Example {
    public static void main(String[] args) {
        String jsonString = "{\"name\":\"John\", \"address\":{\"city\":\"Anytown\",\"street\":\"123 Main St\"}}";
        // 使用 JSONPath 提取城市信息
        Object city = JSONPath.eval(JSON.parse(jsonString), "$.address.city");
        System.out.println("City: " + city);  // 輸出: Anytown
    }
}

3.2 處理自定義日期格式

你可以為 Fastjson2 設(shè)置自定義的日期格式,通過(guò) SerializeConfig 配置。

示例:自定義日期格式

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.serializer.SerializeConfig;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Fastjson2Example {
    public static void main(String[] args) {
        Date date = new Date();
        // 設(shè)置自定義日期格式
        SerializeConfig config = new SerializeConfig();
        config.put(Date.class, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        // 將日期對(duì)象轉(zhuǎn)換為 JSON 字符串
        String jsonString = JSON.toJSONString(date, config);
        System.out.println(jsonString);  // 輸出: 2025-01-13 14:30:00
    }
}

3.3 反序列化時(shí)處理空字段

Fastjson2 在反序列化 JSON 時(shí),如果某些字段為空或者不存在,它會(huì)自動(dòng)跳過(guò)該字段并不會(huì)拋出異常。你可以使用 @JSONField 注解來(lái)控制字段的序列化和反序列化行為。

示例:處理空字段

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.annotation.JSONField;
public class Fastjson2Example {
    public static void main(String[] args) {
        String jsonString = "{\"name\":\"John\",\"age\":null}";
        // 解析 JSON 字符串時(shí)忽略空字段
        Person person = JSON.parseObject(jsonString, Person.class);
        System.out.println(person.getName());  // 輸出: John
        System.out.println(person.getAge());   // 輸出: 0 (默認(rèn)值)
    }
}
class Person {
    private String name;
    @JSONField(serialize = false)  // 不序列化
    private int age;
    // Getters and Setters
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}

4. 總結(jié)

Fastjson2 提供了強(qiáng)大且簡(jiǎn)潔的 JSON 解析功能,包括:

  • 輕松將 JSON 字符串解析為 Java 對(duì)象或 Map
  • 支持嵌套的 JSON 對(duì)象、數(shù)組和復(fù)雜類型的解析。
  • 支持通過(guò) JSONPath 從 JSON 數(shù)據(jù)中提取數(shù)據(jù)。
  • 自定義日期格式和序列化配置。
  • 處理反序列化時(shí)的空字段、字段過(guò)濾等。

這些特性使得 Fastjson2 成為一個(gè)高效且功能豐富的 JSON 解析工具,適用于各種不同的 Java 應(yīng)用場(chǎng)景。

到此這篇關(guān)于java fastjson2 解析JSON用法解析的文章就介紹到這了,更多相關(guān)java fastjson2 解析JSON內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java通過(guò)工廠、Map容器創(chuàng)建對(duì)象的方法

    Java通過(guò)工廠、Map容器創(chuàng)建對(duì)象的方法

    這篇文章主要介紹了Java通過(guò)工廠、Map容器創(chuàng)建對(duì)象的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Java中的logback標(biāo)記日志過(guò)濾器MarkerFilter詳解

    Java中的logback標(biāo)記日志過(guò)濾器MarkerFilter詳解

    這篇文章主要介紹了Java中的logback標(biāo)記日志過(guò)濾器MarkerFilter詳解,在logback-classic中存在一個(gè)全局過(guò)濾器TurboFilter,TurboFilter是與LoggerContext綁定,會(huì)在會(huì)在其它過(guò)濾器之前執(zhí)行,需要的朋友可以參考下
    2023-11-11
  • Spring中ApplicationContextAware的使用方法詳解

    Spring中ApplicationContextAware的使用方法詳解

    ApplicationContextAware?通過(guò)它Spring容器會(huì)自動(dòng)把上下文環(huán)境對(duì)象調(diào)用ApplicationContextAware接口中的setApplicationContext方法,這篇文章主要介紹了Spring中ApplicationContextAware的作用,需要的朋友可以參考下
    2023-03-03
  • SQL注入攻擊及其在SpringBoot中使用MyBatisPlus的防范策略的方法

    SQL注入攻擊及其在SpringBoot中使用MyBatisPlus的防范策略的方法

    本文介紹了如何使用SpringBoot整合JavaDeeplearning4j構(gòu)建一個(gè)文本摘要生成系統(tǒng),該系統(tǒng)能夠自動(dòng)從長(zhǎng)篇文本中提取關(guān)鍵信息,生成簡(jiǎn)潔的摘要,幫助用戶快速了解文本的主要內(nèi)容,系統(tǒng)使用LSTM神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,并通過(guò)SpringBoot創(chuàng)建RESTful?API進(jìn)行調(diào)用
    2024-11-11
  • JavaWeb開(kāi)發(fā)入門(mén)第二篇Tomcat服務(wù)器配置講解

    JavaWeb開(kāi)發(fā)入門(mén)第二篇Tomcat服務(wù)器配置講解

    JavaWeb開(kāi)發(fā)入門(mén)第二篇主要介紹了Tomcat服務(wù)器配置的方法教大家如何使用Tomcat服務(wù)器,感興趣的小伙伴們可以參考一下
    2016-04-04
  • maven版本沖突的原籍及幾種解決方法

    maven版本沖突的原籍及幾種解決方法

    Maven版本沖突是指在使用Maven構(gòu)建項(xiàng)目時(shí),由于依賴傳遞機(jī)制導(dǎo)致同一個(gè)依賴的不同版本被引入項(xiàng)目中,從而引發(fā)的兼容性問(wèn)題,下面就來(lái)介紹幾種解決方法,感興趣的可以了解一下
    2025-12-12
  • 配置DispatcherServlet的方法介紹

    配置DispatcherServlet的方法介紹

    今天小編就為大家分享一篇關(guān)于配置DispatcherServlet的方法介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • java調(diào)用文心一言API的方法實(shí)現(xiàn)過(guò)程

    java調(diào)用文心一言API的方法實(shí)現(xiàn)過(guò)程

    Java是一種廣泛使用的編程語(yǔ)言,用于開(kāi)發(fā)各種應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于java調(diào)用文心一言API的方法實(shí)現(xiàn),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Spring Boot + FreeMarker 實(shí)現(xiàn)動(dòng)態(tài)Word文檔導(dǎo)出功能

    Spring Boot + FreeMarker 實(shí)現(xiàn)動(dòng)態(tài)Word文檔導(dǎo)出功能

    Spring Boot與FreeMarker的組合,為開(kāi)發(fā)者提供了一個(gè)強(qiáng)大的平臺(tái),可以輕松實(shí)現(xiàn)動(dòng)態(tài)Word文檔的導(dǎo)出,本文將指導(dǎo)你如何使用Spring Boot與FreeMarker模板引擎,創(chuàng)建一個(gè)簡(jiǎn)單的應(yīng)用,用于根據(jù)數(shù)據(jù)庫(kù)數(shù)據(jù)動(dòng)態(tài)生成Word文檔并下載,感興趣的朋友一起看看吧
    2024-06-06
  • SpringBoot使用MyBatis-Flex實(shí)現(xiàn)靈活的數(shù)據(jù)庫(kù)訪問(wèn)

    SpringBoot使用MyBatis-Flex實(shí)現(xiàn)靈活的數(shù)據(jù)庫(kù)訪問(wèn)

    MyBatisFlex是一款優(yōu)秀的持久層框架,本文主要介紹了SpringBoot使用MyBatis-Flex實(shí)現(xiàn)靈活的數(shù)據(jù)庫(kù)訪問(wèn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06

最新評(píng)論

两当县| 太白县| 临朐县| 高邑县| 上林县| 平乐县| 萨迦县| 顺平县| 边坝县| 民县| 饶平县| 米林县| 武威市| 岢岚县| 蕲春县| 饶平县| 天津市| 阳泉市| 榆社县| 罗源县| 石家庄市| 班戈县| 保康县| 上虞市| 郎溪县| 泸州市| 略阳县| 龙游县| 太康县| 宝兴县| 阳西县| 永清县| 县级市| 长海县| 建宁县| 东宁县| 六安市| 新野县| 红河县| 灌云县| 长治县|