Go での JSON キーの並べ替え
Python json パッケージには、並べ替えられた順序でキーを含む JSON を生成する sort_keys オプションが用意されています。この記事では、Go のエンコーディング/json パッケージで同様の機能を実現する方法について説明します。
解決策
Go では、json パッケージは次のキーを自動的に並べ替えます。
実装の詳細
キーのソートの実装は次のとおりです。 encode/json 内の encode.go ファイル内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 中国語 Web サイトの他の関連記事を参照してください。