亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

1.GSON解析器

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

導入依賴

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

準備需要轉(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 字符串中的鍵值對對應,即 name 屬性對應 JSON 中的 "name" 鍵,age 屬性對應 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)換成相應的 JSON 字符串。

2.JSONUtil解析

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

導入依賴

<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字符串進行各種轉(zhuǎn)換的方法小結(jié)的詳細內(nèi)容,更多關(guān)于Java JSON字符串轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 關(guān)于IO密集型服務提升性能的三種方式

    關(guān)于IO密集型服務提升性能的三種方式

    這篇文章主要介紹了關(guān)于IO密集型服務提升性能的三種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java 入門圖形用戶界面設計之單選按鈕

    Java 入門圖形用戶界面設計之單選按鈕

    圖形界面(簡稱GUI)是指采用圖形方式顯示的計算機操作用戶界面。與早期計算機使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于接受,本篇精講Java語言中關(guān)于圖形用戶界面的單選按鈕
    2022-02-02
  • java+mysql實現(xiàn)登錄和注冊功能

    java+mysql實現(xiàn)登錄和注冊功能

    這篇文章主要為大家詳細介紹了java+mysql實現(xiàn)登錄和注冊功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 詳解springboot啟動時是如何加載配置文件application.yml文件

    詳解springboot啟動時是如何加載配置文件application.yml文件

    這篇文章主要介紹了詳解springboot啟動時是如何加載配置文件application.yml文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • SpringBoot基于Redis的分布式鎖實現(xiàn)過程記錄

    SpringBoot基于Redis的分布式鎖實現(xiàn)過程記錄

    Redis是一套 key-value 高性能數(shù)據(jù)庫,使用它可以大大提高我們的開發(fā)效率,在SpringBoot中,自動配置也幫我們節(jié)約了大量的配置,下面這篇文章主要給大家介紹了關(guān)于SpringBoot基于Redis的分布式鎖實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Springboot關(guān)于自定義stater的yml無法提示問題解決方案

    Springboot關(guān)于自定義stater的yml無法提示問題解決方案

    這篇文章主要介紹了Springboot關(guān)于自定義stater的yml無法提示問題及解決方案,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • springboot實現(xiàn)發(fā)送郵件(QQ郵箱為例)

    springboot實現(xiàn)發(fā)送郵件(QQ郵箱為例)

    這篇文章主要為大家詳細介紹了springboot實現(xiàn)發(fā)送郵件,qq郵箱代碼實現(xiàn)郵件發(fā)送,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 超詳細介紹idea中java程序打jar包的兩種方式

    超詳細介紹idea中java程序打jar包的兩種方式

    這篇文章主要介紹了超詳細介紹idea中java程序打jar包的兩種方式一種是可直接執(zhí)行的runnable jar文件,另一種是包含多個主類,運行時需要指定主類全類名的jar包,感興趣的可以了解一下
    2020-07-07
  • 解決Java執(zhí)行Cmd命令出現(xiàn)的死鎖問題

    解決Java執(zhí)行Cmd命令出現(xiàn)的死鎖問題

    這篇文章主要介紹了關(guān)于Java執(zhí)行Cmd命令出現(xiàn)的死鎖問題解決,解決方法就是在waitfor()方法之前讀出窗口的標準輸出、輸出、錯誤緩沖區(qū)中的內(nèi)容,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 詳解Java中的內(nèi)存屏障

    詳解Java中的內(nèi)存屏障

    這篇文章主要介紹了Java中的內(nèi)存屏障的相關(guān)資料,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下
    2021-05-05

最新評論