在 Go 中对 JSON 键进行排序
Python json 包提供了 sort_keys 选项来生成键按排序顺序生成的 JSON。本文探讨了如何在Go的encoding/json包中实现类似的功能。
解决方案
在Go中,json包会自动对以下键进行排序:
实现细节
键排序的实现可以在编码中的encode.go文件中找到/json package:
func (enc *encodeState) encodeMap(v reflect.Value) { m := v.Interface().(map[string]interface{}) if enc.indent { enc.write(`{` + enc.indentPrefix) } else { enc.write(`{`) } enc.mapStarted = true keys := make([]string, 0, len(m)) for k := range m { keys = append(keys, k) } sort.Strings(keys) for i, k := range keys { enc.encodeValue(reflect.ValueOf(k)) enc.write(`:`) enc.encodeValue(reflect.ValueOf(m[k])) if i < len(m)-1 { enc.write(`,`) } } enc.write(`}`) enc.mapStarted = false }
此实现确保映射键按字典顺序排序,并且结构体键根据其在结构体定义中的顺序进行排序。
以上是在Go中编码JSON时如何对JSON键进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!