Closed3
pythonでjson受け渡し

バックエンドとAPIをJSONで受け渡しするときにはまった
実際にWeb APIなどで取得できるJSONにはpandas.DataFrameとして読み込みたいデータ以外の情報も付加されているので、そのまま
pandas.read_json()
を適用できない場合が多い。
一旦文字列はさむ
- JSON文字列・ファイルを標準ライブラリのjsonモジュールの
json.loads()
,json.load()
で辞書として読み込む- 辞書から読み込みたい部分を抽出
- 抽出した部分を
json.dumps()
で文字列に変換- 文字列を
pandas.read_json()
に渡す

pandas.DataFrame
として読ませるときにStringIO()
をかませないと「将来ダメになるよ」警告くる
df: pd.DataFrame = pd.read_json(StringIO(data_str), orient='table')
文字列をファイルオブジェクトのように扱うためのものらしい

引数orient
はrecords
も試したけど、バックエンド側でpandas.DataFrame
として読み直すときに日付がおかしくなった(常に1970
年になる)ので、とりあえず動くtable
に。
df: pd.DataFrame = pd.read_json(StringIO(data_str), orient='table')
table
はスキーマの情報を持ってるらしく、これがpandas.DataFrame
に渡されるのでエクセルで保存したときもうまくいったっぽい
このスクラップは2025/02/09にクローズされました