看到技术群有问题问:
json.Marshal 复杂的map[string]interface{} 时,会自动按照key的首字母排序
然后有人说josniter里面的config可以,刚刚自己试了下,还真是可以。
指定Config的SortMapKeys为true.
github.com/json-iterator/go
package main
import (
"fmt"
"github.com/json-iterator/go"
)
func main() {
m := make(map[string]string)
m["sc"] = "sc"
m["sa"] = "sa"
m["a3"] = "a"
m["rr"] = "r"
// 不要使用默认的ConfigDefault,自定义config,指定SortMapKeys为true.
config := jsoniter.Config{
SortMapKeys:true,
}
// 这里之所以要config.Froze(),是参考了ConfigDefault实现的逻辑
byteData, err := config.Froze().Marshal(m)
if err != nil {
fmt.Println("json err:", &err)
}
fmt.Println("node:" , string(byteData))
}
当SortMapKeys:true,输出结果为: {"a3":"a","rr":"r","sa":"sa","sc":"sc"}