package com.xly.milvus.util; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import java.util.List; import java.util.Map; /** * Map 转 JsonObject 工具类 */ public class MapToJsonConverter { /** * 将 Map 转换为 JsonObject */ public static JsonObject convert(Map map) { JsonObject jsonObject = new JsonObject(); if (map == null || map.isEmpty()) { return jsonObject; } for (Map.Entry entry : map.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); addToJson(jsonObject, key, value); } return jsonObject; } /** * 递归添加值到JsonObject */ @SuppressWarnings("unchecked") private static void addToJson(JsonObject jsonObject, String key, Object value) { if (value == null) { jsonObject.add(key, null); } else if (value instanceof String) { jsonObject.addProperty(key, (String) value); } else if (value instanceof Number) { jsonObject.addProperty(key, (Number) value); } else if (value instanceof Boolean) { jsonObject.addProperty(key, (Boolean) value); } else if (value instanceof Character) { jsonObject.addProperty(key, (Character) value); } else if (value instanceof Map) { jsonObject.add(key, convert((Map) value)); } else if (value instanceof List) { jsonObject.add(key, convertList((List) value)); } else if (value instanceof Object[]) { jsonObject.add(key, convertArray((Object[]) value)); } else { // 其他类型转换为字符串 jsonObject.addProperty(key, value.toString()); } } /** * 转换List为JsonArray */ private static JsonArray convertList(List list) { JsonArray jsonArray = new JsonArray(); for (Object item : list) { if (item == null) { jsonArray.add((JsonObject) null); } else if (item instanceof String) { jsonArray.add((String) item); } else if (item instanceof Number) { jsonArray.add((Number) item); } else if (item instanceof Boolean) { jsonArray.add((Boolean) item); } else if (item instanceof Character) { jsonArray.add((Character) item); } else if (item instanceof Map) { jsonArray.add(convert((Map) item)); } else if (item instanceof List) { jsonArray.add(convertList((List) item)); } else { jsonArray.add(item.toString()); } } return jsonArray; } /** * 转换数组为JsonArray */ private static JsonArray convertArray(Object[] array) { JsonArray jsonArray = new JsonArray(); for (Object item : array) { if (item == null) { jsonArray.add((JsonObject) null); } else if (item instanceof String) { jsonArray.add((String) item); } else if (item instanceof Number) { jsonArray.add((Number) item); } else if (item instanceof Boolean) { jsonArray.add((Boolean) item); } else if (item instanceof Character) { jsonArray.add((Character) item); } else if (item instanceof Map) { jsonArray.add(convert((Map) item)); } else if (item instanceof List) { jsonArray.add(convertList((List) item)); } else { jsonArray.add(item.toString()); } } return jsonArray; } }