以下のようにOrderedDict指定して辞書を作成しても、
クライアントに返す際には読み込みファイルの順序を保持せずソートされた順序になってしまいます。
原因がわからないので、もしご指摘ありましたらご教示いただきたいです。
■実現したいこと
.jsonファイルの記述順序(keyの順序)でHTTPレスポンスでJSONを返したい。
▪️試したこと
①json.load()の引数にobject_pairs_hook=OrderedDictを指定した
②OrderedDict型の型付けをした
>jd_reader: OrderedDict = json.load(f,object_pairs_hook=OrderedDict)
③collections.OrderedDict()コンストラクタでオブジェクトを初期化した
④json.dumpの引数にsort_keys=False指定しオブジェクトをjson.loadで取り回そうとした
■現象
json.load(file)をreturnすると、HTTPレスポンスのJSONがファイルの記述順序と異なる順序になる。
特に、自然順にソートされているように(たまたま)見える。
■詳細
Python Ver 3.8.3
以下コードで順序付き辞書にならない。
(code)
@app.route('/test01/columns', methods=['GET'])
def test_columns():
test01_columns_path = './resource/test01/columns/test01_column.json'
with open(test01_columns_path, 'r', encoding='UTF-8') as f:
jd_reader = json.load(f,object_pairs_hook=OrderedDict)
print("json.dumps:"+json.dumps(jd_reader))
return jd_reader
(ブラウザ: chrome > 生データ)
{"Country":"Jamaica","Created At":"1997-03-03T08:27:17.506Z","Email":"Levi@marian.io","Full Name":"Philip Gerlach","User Id":4999}
(コンソール(print箇所))
json.dumps:{"Full Name": "Philip Gerlach", "Country": "Jamaica", "Created At": "1997-03-03T08:27:17.506Z", "User Id": 4999, "Email": "Levi@marian.io"}
(jsonファイル(読み込むファイル)) ★この順序にしたい。
{"Full Name": "Philip Gerlach", "Country": "Jamaica", "Created At": "1997-03-03T08:27:17.506Z", "User Id": 4999, "Email": "Levi@marian.io"}
0 コメント