如何在Go中生成带有排序键的JSON?

时间:2013-09-07 01:02:51

标签: json go

在python中,您可以通过执行

按排序顺序生成带有键的JSON
import json
print json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4, separators=(',', ': '))

我在Go中找不到类似的选项。任何想法我怎么能在go中实现类似的行为?

2 个答案:

答案 0 :(得分:42)

json包总是在编组时命令键。具体做法是:

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

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

实施在这里ATM:

答案 1 :(得分:2)

古斯塔沃·尼迈耶(Gustavo Niemeyer)给出了很好的答案,只是我需要的一个小巧的片段,用于验证和重新排序/规范化[] byte表示的json

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
}