從多個方面詳述map轉string字符串

一、Map轉String字符串互相轉換

在Java開發中,我們經常需要將Map轉換為String字符串,或者將String字符串轉換為Map。下面我們將分別介紹如何實現這兩種轉換。

1、Map轉String字符串:

Map<String, Object> map = new HashMap<>();
map.put("name", "張三");
map.put("age", 18);
String mapStr = "";
if (!map.isEmpty()) {
    StringBuilder stringBuilder = new StringBuilder();
    for (Map.Entry<String, Object> entry : map.entrySet()) {
        stringBuilder.append(entry.getKey())
                .append("=")
                .append(entry.getValue())
                .append("&");
    }
    mapStr = stringBuilder.toString();
    mapStr = mapStr.substring(0, mapStr.length() - 1);
}

2、String字符串轉Map:

String mapStr = "name=張三&age=18";
Map<String, Object> map = new HashMap<>();
if (!mapStr.isEmpty()) {
    String[] split = mapStr.split("&");
    for (String keyValue : split) {
        String[] entry = keyValue.split("=");
        if (entry.length > 1) {
            map.put(entry[0], entry[1]);
        } else {
            map.put(entry[0], "");
        }
    }
}

二、List轉String字符串

有時候我們需要將List轉換為String字符串,下面是實現該功能的代碼:

List<String> list = new ArrayList<>();
list.add("張三");
list.add("李四");
StringBuilder stringBuilder = new StringBuilder();
for (String s : list) {
    stringBuilder.append(s).append(",");
}
String listStr = stringBuilder.toString();
listStr = listStr.substring(0, listStr.length() - 1);

三、字符串String轉Map

有時候我們需要將String字符串轉換為Map類型,下面是實現該功能的代碼:

String mapStr = "{'name':'張三','age':18}";
mapStr = mapStr.replace("{", "")
        .replace("}", "")
        .replace("'", "");
Map<String, Object> map = new HashMap<>();
if (!mapStr.isEmpty()) {
    String[] split = mapStr.split(",");
    for (String keyValue : split) {
        String[] entry = keyValue.split(":");
        if (entry.length > 1) {
            map.put(entry[0], entry[1]);
        } else {
            map.put(entry[0], "");
        }
    }
}

四、String類型如何轉成Map

String類型轉Map的方式有多種,其中一種是使用第三方庫。下面是將json字符串轉換為Map類型的代碼實現:

String jsonStr = "{'name':'張三','age':18}";
Gson gson = new Gson();
Map<String, Object> map = gson.fromJson(jsonStr, new TypeToken<Map<String, Object>>() {
}.getType());

五、String轉Map集合

我們可以將字符串中的數據解析到多個Map中,即將Map合併,下面是實現該功能的代碼:

String listMapStr = "[{'name':'張三','age':18},{'name':'李四','age':19}]";
List<Map<String, Object>> listMap = new ArrayList<>();
listMapStr = listMapStr.replace("[", "")
        .replace("]", "");
if (!listMapStr.isEmpty()) {
    String[] split = listMapStr.split("\\},\\{");
    for (String s : split) {
        Map<String, Object> map = new HashMap<>();
        s = s.replace("{", "")
                .replace("}", "")
                .replace("'", "");
        String[] keyValue = s.split(",");
        for (String entry : keyValue) {
            String[] splitEntry = entry.split(":");
            if (splitEntry.length > 1) {
                map.put(splitEntry[0], splitEntry[1]);
            } else {
                map.put(splitEntry[0], "");
            }
        }
        listMap.add(map);
    }
}

六、String轉換為Map

下面是另一種將json字符串轉換為Map類型的代碼實現:

String jsonStr = "{'name':'張三','age':18}";
Map<String, Object> map = new HashMap<>();
JsonParser parser = new JsonParser();
JsonObject jsonObject = parser.parse(jsonStr).getAsJsonObject();
Set<Map.Entry<String, JsonElement>> entrySet = jsonObject.entrySet();
for (Map.Entry<String, JsonElement> entry : entrySet) {
    String key = entry.getKey();
    Object value = entry.getValue();
    if (value instanceof JsonPrimitive) {
        map.put(key, ((JsonPrimitive) value).getAsString());
    } else if (value instanceof JsonNull) {
        map.put(key, "");
    } else {
        map.put(key, value);
    }
}

七、Map轉換為JSON字符串

通過以下代碼,我們能夠將Map轉換為JSON字符串:

Map<String, Object> map = new HashMap<>();
map.put("name", "張三");
map.put("age", 18);
Gson gson = new Gson();
String jsonStr = gson.toJson(map);

八、String轉JSON字符串

下面是將字符串轉換為JSON字符串的代碼實現:

String str = "張三";
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name", str);
Gson gson = new Gson();
String jsonStr = gson.toJson(jsonObject);

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-16 14:54
下一篇 2024-12-16 14:55

相關推薦

發表回復

登錄後才能評論