如何將JSONArray轉換為Map集合

一、將JSONString轉換為Map

在將JSONArray轉換為Map之前,我們先可以將JSONString轉換為Map,這樣方便我們在後面處理JSONArray時使用。

我們可以使用Gson庫的fromJson方法將JSONString轉換為Map,代碼示例:

import com.google.gson.Gson;
import java.lang.reflect.Type;
import java.util.Map;

public class JsonUtil {
    private static Gson gson = new Gson();

    /**
     * 將JSONString轉換為Map
     */
    public static Map parseJsonToMap(String jsonString) {
        Type type = new TypeToken<Map>() {
        }.getType();
        return gson.fromJson(jsonString, type);
    }
}

這裡使用了Gson庫的TypeToken來表示Map<String, Object>類型,使用gson.fromJson方法將JSONString轉換為Map。

二、JSONString如何轉換成Map集合

在得到Map之後,我們可以使用Map的put方法將JSONArray中的每個元素轉換為Map集合。

假設JSONString的格式如下:

[
    {
        "name": "Tom",
        "age": 20
    },
    {
        "name": "Jerry",
        "age": 22
    }
]

那麼我們可以使用下面的代碼將JSONArray轉換為Map集合:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class JsonUtil {
    /**
     * 將JSONString轉換為Map
     */
    public static List<Map> parseJsonArrayToList(String jsonString) {
        List<Map> list = new ArrayList();
        List<Map> jsonList = gson.fromJson(jsonString, new TypeToken<List<Map>>() {
        }.getType());
        for (Map map : jsonList) {
            Map temp = new HashMap();
            temp.putAll(map);
            list.add(temp);
        }
        return list;
    }
}

我們先使用Gson庫將JSONString轉換為List<Map<String, Object>>,然後遍歷該List中的每個Map並將其轉換為新的Map加入到List中。

三、如何轉化JSONObject為Map

有時候JSONObject可能也要轉換成Map,可以使用類似的方法進行轉換。代碼示例:

import java.util.HashMap;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;

public class JsonUtil {
    /**
     * 將JSONObject轉換為Map
     */
    public static Map parseJsonObjectToMap(JSONObject jsonObject) throws JSONException {
        Map map = new HashMap();
        for (String key : jsonObject.keySet()) {
            Object value = jsonObject.get(key);
            if (value instanceof JSONObject) {
                value = parseJsonObjectToMap((JSONObject) value);
            }
            map.put(key, value);
        }
        return map;
    }
}

我們使用了遞歸的方法,不斷將JSONObject中的Map逐層轉換成新的Map,最終返迴轉換完成後的Map。

四、如何使用Map集合

將JSONArray轉換為Map之後,我們可以像使用普通的Map一般使用它,例如:

List<Map> userList = JsonUtil.parseJsonArrayToList(jsonString);
for (Map user : userList) {
    String name = (String) user.get("name");
    int age = ((Double) user.get("age")).intValue();
    System.out.println("name:" + name + ", age:" + age);
}

這裡我們使用了Map的get方法獲取其中的元素,需要注意的是獲取數字類型的元素需要進行強制類型轉換。

五、處理複雜的JSONArray

上面的方法對於簡單的JSONArray轉換為Map集合已經足夠,但是如果JSONArray中有嵌套的JSONArray或JSONObject就需要使用遞歸的方法進行轉換。

以以下JSONString為例:

[
    {
        "name": "Tom",
        "age": 20,
        "hobbies": [
            "reading",
            "writing"
        ]
    },
    {
        "name": "Jerry",
        "age": 22,
        "hobbies": [
            "singing",
            "dancing",
            {
                "category": "sports",
                "name": "basketball"
            }
        ]
    }
]

我們需要使用遞歸的方法處理其中的嵌套元素。代碼示例:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class JsonUtil {
    /**
     * 將JSONArray轉換為Map
     */
    public static List<Map> parseJsonArrayToList(String jsonString) throws JSONException {
        List<Map> list = new ArrayList();
        JSONArray jsonArray = new JSONArray(jsonString);
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            Map map = new HashMap();
            for (String key : jsonObject.keySet()) {
                Object value = jsonObject.get(key);
                if (value instanceof JSONArray) {
                    value = parseJsonArrayToList(value.toString());
                } else if (value instanceof JSONObject) {
                    value = parseJsonObjectToMap((JSONObject) value);
                }
                map.put(key, value);
            }
            list.add(map);
        }
        return list;
    }

    /**
     * 將JSONObject轉換為Map
     */
    public static Map parseJsonObjectToMap(JSONObject jsonObject) throws JSONException {
        Map map = new HashMap();
        for (String key : jsonObject.keySet()) {
            Object value = jsonObject.get(key);
            if (value instanceof JSONArray) {
                value = parseJsonArrayToList(value.toString());
            } else if (value instanceof JSONObject) {
                value = parseJsonObjectToMap((JSONObject) value);
            }
            map.put(key, value);
        }
        return map;
    }
}

遞歸方法中主要的區別就是處理JSONArray和JSONObject的方法。

六、總結

本文主要介紹了如何將JSONArray轉換為Map集合。我們可以通過先將JSONString轉換為Map,然後使用Map的put方法將JSONArray中的每個元素轉換為Map集合。此外,為了處理複雜的JSONArray,我們介紹了使用遞歸的方法進行轉換。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/252220.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-13 17:34
下一篇 2024-12-13 17:34

相關推薦

  • 使用FFmpeg在Java中將MP3 URL轉換為PCM

    本文介紹了使用FFmpeg在Java中將MP3 URL轉換為PCM的具體步驟,以及相應代碼示例。 一、準備工作 在使用FFmpeg之前,需要先安裝FFmpeg,可以在官網(http…

    編程 2025-04-29
  • 如何將Oracle索引變成另一個表?

    如果你需要將一個Oracle索引導入到另一個表中,可以按照以下步驟來完成這個過程。 一、創建目標表 首先,需要在資料庫中創建一個新的表格,用來存放索引數據。可以通過以下代碼創建一個…

    編程 2025-04-29
  • Python如何將字元串1234變成數字1234

    Python作為一種廣泛使用的編程語言,對於數字和字元串的處理提供了很多便捷的方式。如何將字元串「1234」轉化成數字「1234」呢?下面將從多個方面詳細闡述Python如何將字元…

    編程 2025-04-29
  • 如何將Java項目分成Modules並使用Git進行版本控制

    本文將向您展示如何將Java項目分成模塊,並使用Git對它們進行版本控制。分割Java項目可以使其更容易維護和拓展。Git版本控制還可以讓您跟蹤項目的發展並協作開發。 一、為什麼要…

    編程 2025-04-28
  • 如何將Python開發的網站變成APP

    要將Python開發的網站變成APP,可以通過Python的Web框架或者APP框架,將網站封裝為APP的形式。常見的方法有: 一、使用Python的Web框架Django Dja…

    編程 2025-04-28
  • 如何將視頻導出成更小的格式給IT前端文件

    本文將從以下幾個方面介紹如何將視頻導出成更小的格式,以便於在IT前端文件中使用。 一、選擇更小的視頻格式 在選擇視頻格式時,應該儘可能選擇更小的格式,如MP4、WebM、FLV等。…

    編程 2025-04-28
  • JavaScript中使用new Date轉換為YYYYMMDD格式

    在JavaScript中,我們通常會使用Date對象來表示日期和時間。當我們需要在網站上顯示日期時,很多情況下需要將Date對象轉換成YYYYMMDD格式的字元串。下面我們來詳細了…

    編程 2025-04-27
  • 如何將 Python 列表變成字元串

    本文將從多個方面詳細介紹如何將 Python 列錶轉換為字元串。列表是 Python 中常用的數據類型,但在實際開發中,我們通常需要將其轉換為字元串形式進行操作。下面將從以下幾個方…

    編程 2025-04-27
  • 如何將Python代碼部署到伺服器

    Python是一種高級編程語言,常被用於數據分析、機器學習、Web開發等不同領域的工作。但是,只有將Python代碼部署到伺服器上,才能讓其真正發揮作用。 一、選擇伺服器 要將Py…

    編程 2025-04-27
  • python如何將數據轉換為字元

    Python是一種高級編程語言,擁有簡單易學、可讀性強、語法簡潔的特點,而在編程過程中,我們經常需要將數據轉換為字元格式以便於輸出、存儲和傳輸。下面將從多個方面詳細講解python…

    編程 2025-04-27

發表回復

登錄後才能評論