Python で JSON を load する

Python で JSON を load するPython
ゆうすけ
ゆうすけ

PythonでJSONを読み込みたいです。

資格マフィア
資格マフィア

json load を使うことで Python で JSON を読み込めるぞ。

 

✔️ 本記事のテーマ

 Python で json load をする方法

 

✔️ 読者さんへの前置きメッセージ

本記事は
「Python で JSON を読み込む方法」
について書いています。

 

この記事を読むことで
「Python の json load の仕様 や コード」
について理解できます。

 

Python では、JSON データを dict 型オブジェクトとして扱うことができます。

 

dict 型オブジェクトにすることで、様々なデータ操作を行えるので、
JSON データに対する操作性が向上します。

 

この記事では

  • json load による JSON の読み込み
  • 読み込んだデータの操作方法

などを解説します。

 

それでは、解説していきましょう。

 

Python で JSON を load する

Python で JSON を load する

まず、Python で JSON を load してみましょう。

 

Python標準のjsonライブラリload() を使うことで、
PythonでJSONを読み込むことができます。

 

試しに、以下の json ファイルを読み込んでみましょう。

{"banana": 200.0, "carrot": 20.5, "apple": 10, "drink": 3.8, "egg": 5}

 

以下のコードでJSONを読み込むことができます。

import json


with open('./sample.json', 'r') as f:
    sample_dict = json.load(f)


print(sample_dict)
# {'banana': 200.0, 'carrot': 20.5, 'apple': 10, 'drink': 3.8, 'egg': 5}
print(type(sample_dict))
# <class 'dict'>

このように、JSONデータを読み込み、dict型オブジェクトとして扱うことができます。

 

Python から JSON を load する際のオプション

Python から JSON を load する際のオプション

Python では、 JSON を読み込む際にオプションを指定することができます。

 

主なオプションは以下の通りです。

  • object_pairs_hook
  • parse_float

 

順番に解説していきましょう。

 

json.load()のオプション: object_pairs_hook

object_pairs_hook オプションを指定することで、
JSONデータの順序を保ったまま読み込むことができます。

 

object_pairs_hook = OrderedDict とすることで、
JSONデータをOrderedDictとして読み込むことができます。

 

なお、OrderedDict を使うためには、
collections ライブラリから OrderedDictimport する必要があります。

import json
from collections import OrderedDict


with open('./sample.json', 'r') as f:
    sample_dict = json.load(f, object_pairs_hook=OrderedDict)


print(sample_dict)
# OrderedDict([('banana', 200.0), ('carrot', 20.5), ('apple', 10), ('drink', 3.8), ('egg', 5)])
print(type(sample_dict))
# <class 'collections.OrderedDict'>

 

このように、OrderedDict 型で読み込むことで、順序を保証したデータ保持が可能になります。

 

ただし、Python 3.7 以降は 言語仕様が変更されて、dict 型でも順序が保証されるようになりました。

 

そのため、上記以降のバージョンではこのオプションはあまり意味のないオプションのような気がします。

 

json.load()のオプション: parse_float

parse_float オプションを指定することで、
float 型を別のデータ型にキャストすることができます。

 

以下のコードのように parse_float=decimal.Decimal とすることで、
JSON を load したときに float -> Decimal にキャストします。

import json
import decimal


with open('./sample.json', 'r') as f:
    sample_dict = json.load(f, parse_float=decimal.Decimal)


print(sample_dict)
# {'banana': Decimal('200.0'), 'carrot': Decimal('20.5'), 'apple': 10, 'drink': Decimal('3.8'), 'egg': 5}

 

また、似たようなオプションで parse_int というものもあります。

 

このオプションは JSON の読み込み時に、
 int 型を別のデータ型にキャストすることができます。

 

以下のコードのように parse_int=float とすることで、
JSON を load したときに int -> float にキャストします。

import json


with open('./sample.json', 'r') as f:
    sample_dict = json.load(f, parse_int=float)


print(sample_dict)
# {'banana': 200.0, 'carrot': 20.5, 'apple': 10.0, 'drink': 3.8, 'egg': 5.0}

sample_dict の中身は ‘egg’ の value が 5 ではなく 5.0 になっています。

 

ちなみに、これらの引数に lambda を渡すことで力技で String にキャストすることもできます。

import json


with open('./sample.json', 'r') as f:
    sample_dict = json.load(f, parse_float=lambda x: str(x))


print(sample_dict)
# {'banana': '200.0', 'carrot': '20.5', 'apple': '10', 'drink': '3.8', 'egg': '5'}

sample_dict の各 key の value がString型オブジェクトになっています。

 

なお、Pythonのlambdaの使い方については以下の記事でも解説しています。

参考:PythonのLambda式とは【サンプルコード付き】

 

Python で load した JSON データを操作する

Python で load した JSON データを操作する

Python で load した JSON データは dict 型で扱うことができるので、
様々なデータ操作が可能になります。

 

主に以下のような操作が可能です。

  • 値の取得
  • 値の変更
  • 要素の削除

 

順番に解説していきましょう。

 

ちなみに、これ以降も以下の JSON を load するものとします。

{"banana": 200.0, "carrot": 20.5, "apple": 10, "drink": 3.8, "egg": 5}

 

 

値の取得

load した JSON データは key を指定して 値 を取得することができます。

また、 get() を使うことでも 値 を取得することができます。

import json


with open('./sample.json', 'r') as f:
    sample_dict = json.load(f)


print(sample_dict['banana'])
# 200.0
print(sample_dict['carrot'])
# 20.5
print(sample_dict['apple'])
# 10
print(sample_dict.get('drink'))
# 3.8
print(sample_dict.get('egg'))
# 5

 

 

値の変更

値の取得と同様に、load した JSON データは key を指定して 値 を変更することができます。

import json


with open('./sample.json', 'r') as f:
    sample_dict = json.load(f)


sample_dict['banana'] = 99999

print(sample_dict['banana'])

 

 

要素の削除

load した JSON データから、key と 値 をまるごと削除できます。

pop() メソッドでキーを指定することで削除します。

他にも、 del 文を使うことでも削除できます。

import json


with open('./sample.json', 'r') as f:
    sample_dict = json.load(f)


sample_dict.pop('banana')
print(sample_dict)

del sample_dict['carrot']
print(sample_dict)

 

 

Pythonを書籍で学ぶなら

Pythonを書籍で学ぶなら

Python の json loadについて解説しました。

 

Pythonを基礎から学ぶためには以下の書籍がオススメです。

 

この書籍は初心者向けにかなり丁寧に書かれています。

プログラミング本は難しく、
とっつきにくい印象があるかもしれませんが、
この書籍はとても分かりやすく、
読んでいて「楽しい」と思えるような書きっぷりになっています。

 

初めてPythonを基礎から学ぶ方にはオススメの書籍です。

エンジニアとしての自身の価値をチェックする(完全無料)

エンジニアとして、

自分の価値がどれくらいのものかご存知でしょうか?

 

エンジニアとしてIT業界に身を置いていると

今の会社でずっと働くのか、フリーランスとして独立するのか …

と様々な選択肢があります。

 

どの選択肢が正解なのかを見極めるためにも、選択肢を広げるためにも

自身の価値を知っておくことはとても重要です。

 

TechClips ME では、

職務経歴書をアップロードするだけで企業からのスカウトを受けることができます。

▼▼▼▼▼

▲▲▲▲▲

しかもTechClips MEでは想定年収を企業から提示してくれるので、

自身の価値を数字で分かりやすくたしかめることができます。

 

登録はもちろん完全無料なので、一度登録してみると良いかもしれません。

 

コメント

タイトルとURLをコピーしました