您的位置:

从多个方面详述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);