Python

Python - JSONを扱う(ファイルの読み書き/エンコード・デコード)

JavaScriptなどでよく使われるイメージが強いJSONですが、簡単に扱うことができるため様々な場面で欠かせないフォーマットの一つです。今回は、PythonでJSONを扱うための方法をまとめてみました!

JSONをPythonで扱う(ファイルの読み書き/エンコード・デコード)

PythonでJSONってどやって扱うの?

PythonではJSON(JavaScript Object Notation)を標準ライブラリjsonをインポートすることで扱える

# -*- coding: utf-8 -*-
import json

扱う方法は基本的に2種類だけ
「ファイルの入出力」か「オブジェクトの変換」

  1. ファイルの入出力(ファイル ⇔ Pythonオブジェクト)
    • json.load
    • json.dump
  2. オブジェクトの変換(文字列 ⇔ Pythonオブジェクト)
    • json.loads
    • json.dumps

ファイルへの入出力(json.load/dump)

JSON形式のファイルを読み込んでPythonオブジェクトへ

# -*- coding: utf-8 -*-
import json

"""
data.jsonの中身は以下
[{"id": 1, "name": "apple"}, {"id": 2, "name": "orange"}]
"""
with open('data.json', 'r') as f:
  data_json = json.load(f)

print(data_json)
print(type(data_json))

PythonオブジェクトをJSON形式でファイルに書き込み

# -*- coding: utf-8 -*-
import json

data2 = [{"id": 1, "name": "apple"}, {"id": 2, "name": "orange"}]
print(data2)
print(type(data2))

with open('data2.json', 'w') as f:
  json.dump(data2, f)

オブジェクトの変換(json.loads/dumps)

loads/dumpsは三単現のsに見えるが、
おそらくload(str)/dump(str)の略ではないか(未確認)

JSON文字列からPythonオブジェクトへ変換(デコード)

# -*- coding: utf-8 -*-
import json

data_json = '[{"id": 1, "name": "apple"}, {"id": 2, "name": "orange"}]'
print(data_json)
print(type(data_json))

data = json.loads(data_json)
print(data)
print(type(data))

PythonオブジェクトからJSON文字列へ変換(エンコード)

# -*- coding: utf-8 -*-
import json

data = [{"id": 1, "name": "apple"}, {"id": 2, "name": "orange"}]
print(data)
print(type(data))

data_json = json.dumps(data)
print(data_json)
print(type(data_json))

まとめ

今回は、PythonでJSONを扱うための方法をまとめました。
基本的には2つの方法があり、「ファイルの入出力」を扱う場合と、「オブジェクトの変換」を扱う場合がございます。
若干、おぼえにくいですが、

「文字列とやり取りするにはSをつける!」

と覚えておけば間違いなしです!

-Python