PythonでのJSON形式のファイルデータをパースする方法を現役エンジニアが解説【初心者向け】
初心者向けにPythonでのJSON形式のファイルデータをパースする方法について現役エンジニアが解説しています。JSON形式のデータは、JavaScriptのオブジェクト形式になっているデータのことです。Pythonではjson_loadメソッドで解析することができます。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
監修してくれたメンター
清水 源一郎
テックアカデミーでは、Pythonコース、AIコース、データサイエンスコースを担当。
PythonでのJSON形式のファイルデータをパースする方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
目次
そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。
今回は、Pythonに関する内容だね!
どういう内容でしょうか?
PythonでのJSON形式のファイルデータをパースする方法について詳しく説明していくね!
お願いします!
この記事ではPythonで「JSON形式のデータを扱う方法」について学習します。
JSONは他の言語とデータを交換する際に使用されるデータ形式で、Webアプリケーションにおけるデータのやり取りに使用されます。
今回は、PythonでこのJSONデータを読み書きするためのライブラリjsonの使い方を紹介します。
JSONデータとは
JSONとは、「JavaScript Object Notation」の略称であり、Webアプリケーションでのデータのやり取り等によく利用されているデータ形式です。
JavaScriptと名が付いている通り、元々はJavaScriptのオブジェクトを記述するデータ構造です。ただ、軽量で人間にとっても読みやすいため、現在はPythonなど他の言語でも利用されています。
JSONデータは下記のように、名前(キー)と値のペアを,
で区切り、全体を{}
で区切って記述します。
{
“名前1” : “値1”,
“名前2” : “値2”,
}
Pythonにおける辞書に似ているので、辞書のイメージを持っておくと良いでしょう。
ただし、文字列は’’(シングルクォーテーション)ではなく、””(ダブルクォーテーション)で囲うので注意しましょう。
値には、数値や文字列の他に配列や、{}で囲った別のオブジェクトを入れることができます。
jsonライブラリの使い方
PythonでJSON形式のデータを扱う際はjsonという標準ライブラリを利用します。
ここでは、jsonライブラリの使い方として、基本的な3つの操作をご紹介します。
- jsonデータの読み込み
- jsonデータの書き込み
- jsonデータの確認と整形
それぞれの操作について以下で解説します。
いずれの場合もjsonライブラリの使用時には、事前に以下のコードでインポートしてから使用しましょう。
import json
JSONデータをPythonの読み込み
まずは、JSONデータの読み込み方法を説明します。
loads関数を使うことで、JSON形式の文字列をpythonの辞書に変換できます。
json.loads(文字列)
また、直接JSONファイルを読み込んでpythonの辞書に変換できます。
この場合はload関数を使用します。
with open(JSONファイルのパス) as f:
json.load(f.read())
それぞれのサンプルコードを見てみましょう。
まずは、loads関数のサンプルコードです。
s = '{"key1":"value1", "key2":2}'
dict_from_json = json.loads(s)
print(type(dict_from_json))
print(dict_from_json)
出力結果
<class 'dict'>
{'key1': 'value1', 'key2': 2}
{"key1":"value1", "key2":2}
というJSONデータを文字列として用意し、loads関数に渡すと、Pythonの辞書に変換されていることがわかります。
次に、load関数のサンプルコードを紹介します。
上記と同じ{"key1":"value1", "key2":2}
というJSONデータを記入した、test.jsonというファイルを用意して実行してみてください。
with open('test.json', 'r') as f:
print(json.load(f))
出力結果
{'key1': 'value1', 'key2': 2}
loads関数の場合と同じようにJSONデータが辞書に変換できていますね。
一度変換してしまえば、後はPythonの辞書として、データの追加や編集が可能です。
辞書[キー]というコードで値にアクセスすることができます。
JSONデータの書き込み
次にPythonのデータをJSONデータに変換する方法を紹介します。
先ほど紹介したload, loads関数と反対に、Pythonの辞書をJSONファイルとして出力するdump関数とPythonの辞書をJSONデータの文字列に変換するdumps関数がそれぞれ存在します。
二つの関数はそれぞれ次のように使用します。
json.dumps(JSONデータにしたい辞書)
with open(出力するJSONファイルのパス, 'w') as f:
json.dump(JSONデータにしたい辞書, f)
サンプルコードによる利用例も確認してみましょう。
python_dict = {'key1':'value1', 'key2':[1,2,3]}
print(json.dumps(python_dict))
with open('test2.json', 'w') as f:
json.dump(python_dict, f)
出力結果
{"key1": "value1", "key2": [1, 2, 3]}
Pythonの辞書をJSONデータに変換することができました。 出力されたデータと同じ内容が記載されたtest2.jsonというファイルも出力されていますね。
JSONデータの確認と整形
jsonライブラリのjson.toolを使用すると、コマンドライン(windowsのコマンドプロンプトやMacのターミナル)からもjsonデータを確認できます。
$ python -m json.tool JSONファイルのパス
というコマンドを入力すると、JSONファイルの中身を整形出力して確認できます。
例えば、先ほど作成した、{“key1”: “value1”, “key2”: [1, 2, 3]}というデータが書き込まれたtest2.jsonを扱ってみます。
$ python -m json.tool test2.json
出力結果
{ "key1": "value1", "key2": [ 1, 2, 3 ] }
上記のようにインデントが整えられたり、名前:値のペアごとに改行されたり、配列の要素ごとに改行されたりして見やすく出力されています。
実際にJSONデータを操作してみよう
ここまで紹介した内容を使って実際にJSONデータを操作してみましょう。
pythonでJSONファイルを読み込み、内容を編集して、別のJSONファイルとして保存していきます。
今回は次のような、あるサービスの会員情報のデータを扱ってみます。
会員のIDと名前、趣味と登録日が記されたデータになっています。
次のデータをsample.jsonという名前で保存しておいてください。
サンプルコード
#①データの読み込み
with open('sample.json', 'r') as f:
member = json.load(f)
print(member['Signup_at']['Year'])
#②データの編集
member['Hobby'].append('Swimming')
print(member)
member2 = {
'ID': 'A002',
'Name': 'Jiro', 'Hobby': ['Reading books', 'Running'],
'Signup_at': {'Year': 2022, 'Month': 6, 'day': 1}
}
new_data = [member, member2]
#③データの保存
with open('sample2.json', 'w') as f:
json.dump(new_data, f, indent=4)
出力結果
2022 {'ID': 'A001', 'Name': 'Taro', 'Hobby': ['Swimming'], 'Signup_at': {'Year': 2022, 'Month': 1, 'day': 1}}
まず、2-3行目でsample.jsonのデータを読み込んでいます。
今回のデータの登録日 “Signup_at”に対する値は、さらに”Year”,”Month”, “Day”をキーとする辞書になっています。
そのため、登録日の情報にアクセスしたい場合は、member['Signup_at']['Year']
として、"Signup_at"
の値の辞書を呼び出した後に更にキー"Year"
を指定します。
次にデータの編集を行っています。
まず、TaroさんのHobby(趣味)にSwimming(水泳)を追加しています。
Hobbyの値はリストになっているので、member['Hobby']
によってリストにアクセスした後、リストの要素追加のappendメソッドでデータを追加しています。
memberを出力すると、Swimmingが追加されていることが確認できますね。
その後、別の会員のJiroさんのデータを新たに追加しています。
このように、JSONデータはいくつかのオブジェクトの配列となることがあります。
最後にJiroさんの情報を追加した新しいデータをsample2.jsonという名前で保存しています。
sample2.jsonの中身は下記のようになっており、編集や追加した情報が反映されています。
dump関数では、サンプルコードのように、引数indentでインデントの字数を指定することで、見やすく出力できます。
[ { "ID": "A001", "Name": "Taro", "Hobby": [ "Swimming" ], "Signup_at": { "Year": 2022, "Month": 1, "day": 1 } }, { "ID": "A002", "Name": "Jiro", "Hobby": [ "Reading books", "Running" ], "Signup_at": { "Year": 2022, "Month": 6, "day": 1 } } ]
まとめ
本記事では、jsonライブラリについて解説しました。
- JSONデータとは
- jsonライブラリの使い方
- JSONデータの操作方法
JSONデータを活用することで、他の言語やアプリケーションとのデータのやり取りが可能になります。
ぜひ使いこなせるように覚えておきましょう。
内容が分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
Pythonを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのPythonコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、人工知能(AI)や機械学習の基礎を学べます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!