2013-09-07 2 views
9

あなたは私が行くで同様のオプションを発見していないGoでソートされたキーを使用してJSONを生成する方法は? Pythonで

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

を行うことによって、ソート順でキーを使用してJSONを生成することができます。どのように私は同じような行動を達成することができます任意のアイデア?

+0

あなたは使用したソリューションを投稿できますか? 'NewEncoder(...)。Encode(structInstance)'を使ってみましたが、出力されたjsonキーはソートされません。 –

答えて

29

jsonパッケージは、マーシャリング時に常にキーを注文します。具体的に:

  • マップがそのキーが辞書順

  • 構造体のキーが構造体

実装で定義された順序で整列化されてここに住んでATMにソートしている:

+1

Noice。私はなぜエンコーディング/ jsonのドキュメントがこの重要なプロパティに言及していないのだろうかと思います。 –

+0

これは文書化されました:https://golang.org/pkg/encoding/json/#Marshal:マップ値はJSONオブジェクトとしてエンコードされます。マップのキータイプは、文字列、整数型、またはencoding.TextMarshalerを実装する必要があります。マップキーはJSONオブジェクトキーとしてソートされ、上記の文字列値で説明されているUTF-8強制に従って、以下のルールを適用して使用します。 – programaths

+2

構造キーはどうですか?オーダーは文書化されていますか? – updogliu

関連する問題