8
16

More than 3 years have passed since last update.

【Python】 PythonでJSONを使う

Last updated at Posted at 2020-01-13

はじめに

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型になります。

import json

sample_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()を使います。

import pandas as pd

df_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)

# 出力
   x  y  z
A  1  1  1
B  2  3  4
C  8  7  6

{"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だけでなくほかの言語でも使えるので言語間の通信に便利です。ここでは最低限しか説明してませんがぜひ使ってみてください!

思ったこと

自分が使ってみて、とかの視点で書いているのでまったく網羅的に触れることができていない記事ばかりだなと思いました。とりあえず今後も自分が使ってみたものについて書いてみて、見直す必要があった場合は記事を更新していこうかなと思います。

8
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
16