【Python】.jsonファイルを読み込んでjson.load() でOrderedDict指定して辞書作成しても、レスポンス時自然順にソートされる

以下のように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 コメント