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

Java中JSON字符串進(jìn)行各種轉(zhuǎn)換的方法小結(jié)

 更新時間:2024年01月28日 10:11:59   作者:不歸SUN  
Gson和Hutool的JSONUtil都是常用的用于處理JSON數(shù)據(jù)的工具庫,它們提供了簡單易用的API來進(jìn)行JSON字符串的解析、轉(zhuǎn)換和操作,下面就跟隨小編一起學(xué)習(xí)一下如果使用他們實現(xiàn)JSON字符串的各種轉(zhuǎn)換吧

Gson和Hutool的JSONUtil都是常用的用于處理JSON數(shù)據(jù)的工具庫,它們提供了簡單易用的API來進(jìn)行JSON字符串的解析、轉(zhuǎn)換和操作。下面對它們進(jìn)行一些比較:

  • 功能豐富程度: Gson相對來說是一個更全面的JSON處理庫,提供了更多的功能和選項,例如支持自定義序列化和反序列化規(guī)則、處理復(fù)雜對象等。而Hutool的JSONUtil則是Hutool工具庫中的一部分,相對較為簡潔,提供了一些基本的JSON操作方法。
  • 使用方式: Gson使用起來比較簡單明了,只需創(chuàng)建Gson對象,并通過其提供的方法進(jìn)行序列化和反序列化操作。而Hutool的JSONUtil也非常易用,可以直接調(diào)用其提供的方法進(jìn)行JSON字符串的解析、轉(zhuǎn)換和操作。
  • 性能: 在性能方面,Gson通常比Hutool的JSONUtil稍微快一些。這是由于Gson在內(nèi)部使用了很多高級的技術(shù)和優(yōu)化策略來提高效率,但在大多數(shù)情況下,性能差異并不會對應(yīng)用程序產(chǎn)生顯著影響。
  • 依賴和引入: Gson是Google開發(fā)的庫,需要單獨引入Gson的依賴包。而Hutool是一個Java工具庫,JSONUtil是其中的一個模塊,可以通過引入整個Hutool工具庫來使用。

在使用選擇方面,如果你需要更多高級的JSON操作和自定義功能,或者對性能有較高要求,那么可以選擇使用Gson。而如果你只需要進(jìn)行一些基本的JSON解析、轉(zhuǎn)換和操作,并且希望使用一個輕量級的工具庫,那么Hutool的JSONUtil是一個很好的選擇。最終選擇取決于你的具體需求和偏好。

1.GSON解析器

Gson 是一個開源的 Java 庫,用于在 Java 對象和 JSON 數(shù)據(jù)之間進(jìn)行序列化和反序列化操作。它可以將 Java 對象轉(zhuǎn)換為 JSON 字符串,并將 JSON 字符串轉(zhuǎn)換為 Java 對象。 可以將字符串轉(zhuǎn)換為復(fù)雜的bean,

導(dǎo)入依賴

<dependency> 
<groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version> 
</dependency>

準(zhǔn)備需要轉(zhuǎn)換成的實體類

@Data  
public class User{  
private Integer id;  
private String name;  
private String sex;
}

1.字符串轉(zhuǎn)javaBean對象

String str="{\"id\":1,\"name\":\"Lily\",\"sex\":\"女\"}";  
Gson gson = new Gson();  
User user = gson.fromJson(str, User.class);

使用 gson.fromJson() 方法將 JSON 字符串 str 轉(zhuǎn)換為 User 對象,并將結(jié)果存儲在 user 變量中。

注意,User 類需要與 JSON 字符串中的鍵值對對應(yīng),即 name 屬性對應(yīng) JSON 中的 "name" 鍵,age 屬性對應(yīng) JSON 中的 "age" 鍵。

2.字符串轉(zhuǎn)List

String strList="[{\"id\":1,\"name\":\"Lily\",\"sex\":\"女\"},{\"id\":2,\"name\":\"Bob\",\"sex\":\"男\(zhòng)"}]";  
Gson gson = new Gson(); 
List<User> users = gson.fromJson(strList, new TypeToken<List<User>>() {  
}.getType());

此方法參數(shù)中的Type類型可以通過Gson包提供TypeToken<>類獲取。這個類帶有泛型,且這個泛型就是Json串轉(zhuǎn)換成為對象后的類型(此處是List<User>)我們不需要重寫這個類中的任何方法,只需要創(chuàng)建這個類的一個匿名內(nèi)部類并調(diào)用getTpye()方法即可。

注意:需要轉(zhuǎn)換的字符串strList,必須是list格式,以"["開頭,"]"結(jié)尾。不然會報錯:com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 1 path $

3.字符串轉(zhuǎn)map

與轉(zhuǎn)換為List步驟一樣,注意:字符串需以"{"開頭。

String strList="{\"id\":1,\"name\":\"Lily\",\"sex\":\"女\"}";  
Gson gson = new Gson(); 
Map<String, Person> jsonMap = gson.fromJson(mapJson, new TypeToken<Map<String, Person>>() { }.getType());

4.Object轉(zhuǎn)換為JSON字符串

String json = gson.toJson(Object);

使用 gson.toJson() 方法將 各種Java 對象轉(zhuǎn)換成相應(yīng)的 JSON 字符串。

2.JSONUtil解析

JSONUtil 是 Hutool 中用于處理 JSON 數(shù)據(jù)的工具類。

導(dǎo)入依賴

<dependency> 
<groupId>cn.hutool</groupId> <artifactId>hutool-json</artifactId> 
<version>5.7.6</version> </dependency>

1.Object轉(zhuǎn)換為JSON字符串

JSONUtil.toJsonStr可以將任意對象(Bean、Map、集合等)直接轉(zhuǎn)換為JSON字符串。 如果對象是有序的Map等對象,則轉(zhuǎn)換后的JSON字符串也是有序的。

String jsonStr = JSONUtil.toJsonStr(Object);

2.JSON字符串轉(zhuǎn)換為map

首先使用 JSONUtil.parseObj() 方法將 JSON 字符串解析為一個 JSONObject 對象,然后使用 toBean() 方法將 JSONObject 對象轉(zhuǎn)換為 HashMap 類型的 Java 對象。

String str="{\"id\":1,\"name\":\"Lily\",\"sex\":\"女\"}";
JSONObject jsonObject = JSONUtil.parseObj(str);  
HashMap map = jsonObject.toBean(HashMap.class);

3.JSON字符串轉(zhuǎn)換為List

1.使用 JSONArray.parseArray() 方法將 JSON 字符串轉(zhuǎn)換為 JSONArray 對象; 使用 JSONArray.toList() 方法將 JSONArray 對象轉(zhuǎn)換為 List 對象

String jsonString = "[{\"id\": 1, \"name\": \"Alice\"}, {\"id\": 2, \"name\": \"Bob\"}]";
JSONArray jsonArray = JSONUtil.parseArray(jsonString);
List<Map<String, Object>> list = CollectionUtil.toList(jsonArray, Map.class);

2.JSONUtil.toList()方法需要傳入兩個參數(shù):一個JsonArray,一個要轉(zhuǎn)換的類型,這里new一個JsonArray

JSONArray jsonArray = new JSONArray(jsonList); 
List<Map> mapList = JSONUtil.toList(jsonArray, Map.class);

3.總結(jié)

1.GSON

Object轉(zhuǎn)換為json字符串:gson.toJson(Object)

json字符串轉(zhuǎn)Object: gson.fromJson(strList, new TypeToken<>() { }.getType());

2.JSONUtil

Object轉(zhuǎn)換為json字符串:JSONUtil.toJsonStr(Object)

json字符串轉(zhuǎn)map:

HashMap<String,Integer> hashMap = JSONUtil.parseObj(jsonMap).toBean(HashMap.class);

json字符串轉(zhuǎn)list:

JSONArray jsonArray = new JSONArray(objListJson); List users = JSONUtil.toList(jsonArray, User.class);

或者:

JSONArray jsonArray = JSONUtil.parseArray(jsonString); List list = CollectionUtil.toList(jsonArray, User.class);

以上就是Java中JSON字符串進(jìn)行各種轉(zhuǎn)換的方法小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Java JSON字符串轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • IDEA遠(yuǎn)程管理docker鏡像及容器服務(wù)的實現(xiàn)

    IDEA遠(yuǎn)程管理docker鏡像及容器服務(wù)的實現(xiàn)

    本文主要介紹了IDEA遠(yuǎn)程管理docker鏡像及容器服務(wù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 淺談Java動態(tài)代理的實現(xiàn)

    淺談Java動態(tài)代理的實現(xiàn)

    最近,小組同事做代碼改造時,使用到了動態(tài)代理,自己閱讀時,發(fā)現(xiàn)對代理這種設(shè)計模式都不怎么清楚,導(dǎo)致理解代碼也很困難 自己唯一能看懂的,大概就是handler中的invoke方法 ,文中作出了非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-05-05
  • 手把手帶你粗略了解Java--類和對象

    手把手帶你粗略了解Java--類和對象

    這篇文章主要給大家介紹了關(guān)于java中類和對象的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • 詳解在Spring中如何使用AspectJ來實現(xiàn)AOP

    詳解在Spring中如何使用AspectJ來實現(xiàn)AOP

    這篇文章主要介紹了詳解在Spring中如何使用AspectJ來實現(xiàn)AOP,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • springboot整合mybatis將sql打印到日志的實例詳解

    springboot整合mybatis將sql打印到日志的實例詳解

    這篇文章主要介紹了springboot整合mybatis將sql打印到日志的實例詳解,需要的朋友可以參考下
    2017-12-12
  • 關(guān)于maven工程多模塊、項目打包問題

    關(guān)于maven工程多模塊、項目打包問題

    這篇文章主要介紹了關(guān)于maven工程多模塊、項目打包問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Java讀寫Excel實例分享

    Java讀寫Excel實例分享

    本文主要分享了Java讀寫Excel的實例代碼。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • Java按值傳遞和按址傳遞(面試常見)

    Java按值傳遞和按址傳遞(面試常見)

    這篇文章主要介紹了Java按值傳遞和按址傳遞(面試常見)知識,在面試筆試題中經(jīng)常會遇到,今天小編給大家詳細(xì)介紹下,需要的朋友可以參考下
    2017-02-02
  • Java設(shè)計模式之備忘錄模式實現(xiàn)對象狀態(tài)的保存和恢復(fù)

    Java設(shè)計模式之備忘錄模式實現(xiàn)對象狀態(tài)的保存和恢復(fù)

    本文介紹Java設(shè)計模式之備忘錄模式,該模式可以實現(xiàn)對象狀態(tài)的保存和恢復(fù)。通過詳細(xì)講解備忘錄模式的原理、實現(xiàn)方法和應(yīng)用場景,幫助讀者深入理解該設(shè)計模式,并提供示例代碼和技巧,便于讀者實際應(yīng)用
    2023-04-04
  • Java操作MongoDB事務(wù)未生效的常見場景及解決方案

    Java操作MongoDB事務(wù)未生效的常見場景及解決方案

    在 Java 開發(fā)中,使用 MongoDB 存儲數(shù)據(jù)時,事務(wù)的正確使用至關(guān)重要,然而,在實際開發(fā)過程中,經(jīng)常會遇到 MongoDB 事務(wù)沒有生效的情況,本文我將結(jié)合多年實踐經(jīng)驗,深入剖析事務(wù)未生效的常見場景,并給出詳細(xì)的解決方案,需要的朋友可以參考下
    2025-07-07

最新評論

左权县| 万州区| 和林格尔县| 延庆县| 车险| 曲麻莱县| 宁河县| 丹凤县| 壤塘县| 海阳市| 海阳市| 台中县| 华蓥市| 乌拉特后旗| 封开县| 广平县| 蒙山县| 油尖旺区| 盖州市| 偃师市| 视频| 鱼台县| 吐鲁番市| 新乡市| 福安市| 临澧县| 民县| 建始县| 京山县| 陵川县| 徐水县| 天水市| 金阳县| 邵阳县| 抚宁县| 九龙坡区| 淮阳县| 新竹县| 延津县| 白银市| 徐闻县|