はじめに
Pythonでjsonのデータを扱うことがあったのですが、Python標準のdict型と親和性があるので紹介します。
jsonとは
こちらとても参考になります。ありがとうございます。
JavaScript Object Notation
データを表現するための記法です。
JavaScriptの構文に似ていますが、JavaScriptとは独立して扱われます。
JavaScript以外のプログラミング言語でもJSONを扱うことができる機能が準備されています。
この記事はJSONを使っていくことを中心な記事なので細かい説明は省略します。
形式は以下のようなものです。keyに対してvalueが紐づいているという感じです。
{
"key":value,
"key":value,
"key":value
}
keyとvalueのセットというのはPythonのdictと同じですね。
Pythonのjsonモジュール
Pythonにjsonモジュールが存在します。dict⇔jsonの変換を主にやってくれます。
dictからjsonへの変換にはjson.dumps
を使います。
dictの型はもちろんdictですが、変換後はstr型になります。
importjsonsample_dict={"Japan":"Tokyo","UK":"London","USA":"Washington, D.C."}print(type(sample_dict))print(sample_dict)# 出力
# <class 'dict'>
# {'Japan': 'Tokyo', 'UK': 'London', 'USA': 'Washington, D.C.'}
# 変換
sample_json=json.dumps(sample_dict)print(type(sample_json))print(sample_json)# 出力
# <class 'str'>
# {"Japan": "Tokyo", "UK": "London", "USA": "Washington, D.C."}
pandasからjsonに変換する
pandas DataFrameやpandas Seriesからもjsonに変換することができます。個人的にpandasはよく使うのでありがたいです。
pandasDataFrame(Series)からjsonへの変換はto_json()
を使います。
importpandasaspddf_sample=pd.DataFrame([[1,1,1],[2,3,4],[8,7,6]],columns=["x","y","z"],index=["A","B","C"])json_df=df_sample.to_json()print(df_sample)print(json_df)# 出力
xyzA111B234C876{"x":{"A":1,"B":2,"C":8},"y":{"A":1,"B":3,"C":7},"z":{"A":1,"B":4,"C":6}}
jsonを読み込む
jsonのデータを読み込むには json.loads を使います。
先ほどのsample_jsonを使います。
dict_json=json.loads(sample_json)print(type(dict_json))print(dict_json)# 出力
# <class 'dict'>
# {'Japan': 'Tokyo', 'UK': 'London', 'USA': 'Washington, D.C.'}
もちろんdict_jsonはPythonのdictなので
print(dict_json['Japan'])# 出力
# Tokyo
このような形でアクセスできます。
おわりに
jsonはpythonだけでなくほかの言語でも使えるので言語間の通信に便利です。ここでは最低限しか説明してませんがぜひ使ってみてください!
思ったこと
自分が使ってみて、とかの視点で書いているのでまったく網羅的に触れることができていない記事ばかりだなと思いました。とりあえず今後も自分が使ってみたものについて書いてみて、見直す必要があった場合は記事を更新していこうかなと思います。