最新产品
This commit is contained in:
116
src/main/java/com/yj/earth/common/util/MapUtil.java
Normal file
116
src/main/java/com/yj/earth/common/util/MapUtil.java
Normal file
@ -0,0 +1,116 @@
|
||||
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 <K, V> void mergeMaps(Map<K, V> originalMap, Map<K, V> newMap) {
|
||||
// 检查参数是否为null、避免空指针异常
|
||||
if (originalMap == null || newMap == null) {
|
||||
throw new IllegalArgumentException("参数Map不能为null");
|
||||
}
|
||||
|
||||
// 遍历新Map中的所有键值对
|
||||
for (Map.Entry<K, V> 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 <K, V> Map<K, V> 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 <K, V> String mapToString(Map<K, V> 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 <T> 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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user