package utils import "sort" // SortMapParams 对map的key进行排序,包括多层嵌套的情况 func SortMapParams(data map[string]interface{}) map[string]interface{} { sortedMap := make(map[string]interface{}) keys := make([]string, 0, len(data)) // 收集所有的key for key := range data { keys = append(keys, key) } // 对key进行排序 sort.Strings(keys) // 通过排序后的key插入新map中 for _, key := range keys { value := data[key] switch valueTyped := value.(type) { case map[string]interface{}: // 如果是嵌套的map,递归调用 sortedMap[key] = SortMapParams(valueTyped) case []interface{}: // 如果是嵌套的slice,对其中的map进行递归调用 for i, v := range valueTyped { if vMap, ok := v.(map[string]interface{}); ok { valueTyped[i] = SortMapParams(vMap) } } sortedMap[key] = valueTyped default: // 否则直接插入 sortedMap[key] = value } } return sortedMap }