30

在python中,您可以通过执行以排序顺序生成带有键的JSON

import json
print json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4, separators=(',', ': '))

我在 Go 中没有找到类似的选项。有什么想法可以在 go 中实现类似的行为吗?

4

2 回答 2

73

json 包在编组时总是对键进行排序。具体来说:

  • 地图的键按字典顺序排序

  • 结构键按结构中定义的顺序编组

实现在这里 ATM:

于 2013-09-07T01:53:56.773 回答
7

Gustavo Niemeyer 给出了很好的答案,只是我在需要时用来验证和重新排序/规范化 json 的 []byte 表示的一个方便的小片段

func JsonRemarshal(bytes []byte) ([]byte, error) {
    var ifce interface{}
    err := json.Unmarshal(bytes, &ifce)
    if err != nil {
        return []byte{}, err
    }
    output, err := json.Marshal(ifce)
    if err != nil {
        return []byte{}, err
    }
    return output, nil
}
于 2020-05-19T09:15:34.707 回答