当前位置: 首页 > 工具软件 > jsoniter > 使用案例 >

使用jsoniter实现map[string]interface的key按照字母顺序排序

苍宝
2023-12-01

看到技术群有问题问:

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"}

 

 类似资料: