1

Django で作業しているとsimplejson、厳密に順序どおりに情報を送信する必要がある場合があります。

values = {"entry1":"value1","entry2":"value2","entry3":"value3"}
return HttpResponse(simplejson.dumps(values),content_type="application/json")

それはそれが返すものです

{"entry2": "value2", "entry3": "value3", "entry1": "value1"}

しかし、代わりにこれを返したい:

{"entry1":"value1","entry2":"value2","entry3":"value3"}

で情報を順番に送信するにはどうすればよいsimplejsonですか?

4

4 に答える 4

3

情報を厳密に順番に送信する必要がある場合があります。辞書を使用しないでください。タプルのリストを使用してください。

values = [("entry1", "value1"), ("entry2", "value2"), ("entry3", "value3")]

辞書JSON オブジェクトには順序がありません。どちらも入力順序を保持しませんし、必須でもありません。

JSON RFCを引用するには:

オブジェクトは、0 個以上の名前と値のペアの順序付けられていないコレクションです [...]

および Pythondict.items()ドキュメント:

キーと値は任意の順序でリストされます。これはランダムではなく、Python の実装によって異なり、辞書の挿入と削除の履歴に依存します。

于 2013-07-22T13:56:53.393 に答える
1

sort_keys=Trueダンプでオプションを使用できます。

simplejson.dumps(values, sort_keys=True)

これにより、キーがソートされた順序で辞書が出力されます。ただし、辞書は本質的に順不同であるため、辞書をパラメーターとして に渡すとHttpResponse、結果は順不同になります。

于 2013-07-22T13:58:45.420 に答える