package com.yj.earth.common.util; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.HashMap; import java.util.Map; public class MapUtil { private static final ObjectMapper objectMapper = new ObjectMapper(); /** * 合并两个 Map、如果存在相同的 Key、则用新 Map 中的值替换原始 Map 中的值 * 如果原始 Map 中有某个 Key 而新 Map 中没有、则保持原始 Map 中的值不变 */ public static void mergeMaps(Map originalMap, Map newMap) { // 检查参数是否为null、避免空指针异常 if (originalMap == null || newMap == null) { throw new IllegalArgumentException("参数Map不能为null"); } // 遍历新Map中的所有键值对 for (Map.Entry entry : newMap.entrySet()) { K key = entry.getKey(); // 如果原始Map中存在相同的key、则替换值 if (originalMap.containsKey(key)) { originalMap.put(key, entry.getValue()); } // 如果原始Map中不存在该key、则不做任何操作 } } /** * 将JSON字符串转换为Map对象 * * @param jsonString JSON格式的字符串 * @return 转换后的Map对象、如果JSON为空则返回空Map * @throws IllegalArgumentException 当JSON字符串无效或解析失败时抛出 */ public static Map jsonToMap(String jsonString) { if (jsonString == null || jsonString.trim().isEmpty()) { return new HashMap<>(); } try { // 将JSON字符串转换为Map return objectMapper.readValue(jsonString, Map.class); } catch (JsonProcessingException e) { throw new IllegalArgumentException("JSON字符串解析失败: " + e.getMessage(), e); } } /** * 将 Map 对象转换为JSON字符串 */ public static String mapToString(Map map) { if (map == null) { return ""; } try { // 将Map转换为JSON字符串 return objectMapper.writeValueAsString(map); } catch (JsonProcessingException e) { throw new IllegalArgumentException("Map转换为JSON字符串失败: " + e.getMessage(), e); } } /** * 将任意类型对象转换为JSON字符串 */ public static String objectToJson(T object) { if (object == null) { return ""; } try { // 将对象转换为JSON字符串 return objectMapper.writeValueAsString(object); } catch (JsonProcessingException e) { throw new IllegalArgumentException("对象转换为JSON字符串失败: " + e.getMessage(), e); } } /** * 从Map中获取指定key的字符串值 * * @param map 数据源Map * @param key 要获取的字段名 * @return 字段的字符串值、如果map为null或key不存在则返回null */ public static String getString(Map map, String key) { if (map == null || key == null) { return null; } Object value = map.get(key); return value != null ? value.toString() : null; } /** * 直接从JSON字符串中获取指定key的字符串值 * * @param jsonString JSON格式的字符串 * @param key 要获取的字段名 * @return 字段的字符串值、如果JSON为空或key不存在则返回null */ public static String getString(String jsonString, String key) { if (jsonString == null || key == null) { return null; } Map map = jsonToMap(jsonString); return getString(map, key); } }