PythonでJSONを扱う方法とは?JSONファイルの読み書きや文字列への変換について紹介!
- システム
エンジニア - PythonでJSONを扱う方法について教えてください。
- プロジェクト
マネージャー - 分かりました。PythonでJSONファイルの読み書きや文字列への変換についてお話ししましょう。
PythonでJSONを扱う方法とは?
今回は、PythonでJSONを扱う方法について説明します。JSONとはJavaScript Object Notationの略で、データを扱うためのフォーマットです。ここでは、JSONファイルの読み書きや、データアクセス、文字列への変換などについて紹介します。
PythonでJSONを扱う方法に興味のある方はぜひご覧ください。
読込み
PythonでJSONファイルを読み込む方法を紹介します。事前に以下の内容のjson_sample.txtをカレントディレクトリに用意してください。
1
2
3
4
5
6
|
{
"ichiro":{
"age" : 20,
"gender": "male" ,
"email": "ichiro@email.com" }
}
|
それでは、実際のソースコードを見てみましょう。ソースコードの先頭に「import json」を記述してください。
1
2
3
4
5
|
import json
# JSONファイルオープン
with open('json_sample.txt') as file:
print(json.load(file))
|
実行結果は以下のようになります。
1
|
{'ichiro': {'age': 20, 'gender': 'male', 'email': 'ichiro@email.com'}}
|
このようにPythonでは、JSONファイルを読み込めます。json.load()で読み込むと辞書形式になります。
特定のデータにアクセス
JSONファイルに複数データが存在する場合、特定のデータにアクセスする方法を紹介します。実際のソースコードを見てみましょう。json_sample.txtは以下のようになっているとします。
1
2
3
4
5
|
{
"ichiro":{"age" : 20, "gender": "male", "email": "ichiro@email.com"},
"jiro":{"age" : 17, "gender": "male", "email": "jiro@email.com"},
"hanako":{"age" : 32, "gender": "female", "email": "hanako@email.com"}
}
|
それでは、実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
|
import json
# JSONファイルオープン
with open('json_sample.txt') as file:
json_dict = json.load(file)
print(json_dict)
print('ichiro:{}'.format(json_dict['ichiro'])) # ichiro:{'age': 20, 'gender': 'male', 'email': 'ichiro@email.com'}
print('jiro\'s age:{}'.format(json_dict['jiro']['age'])) # jiro's age:17
print('hanako\'s email:{}'.format(json_dict['hanako']['email'])) # hanako's email:hanako@email.com
|
実行結果は以下のようになります。
1
2
3
4
|
{'ichiro': {'age': 20, 'gender': 'male', 'email': 'ichiro@email.com'}, 'jiro': {'age': 17, 'gender': 'male', 'email': 'jiro@email.com'}, 'hanako': {'age': 32, 'gender': 'female', 'email': 'hanako@email.com'}}
ichiro:{'age': 20, 'gender': 'male', 'email': 'ichiro@email.com'}
jiro's age:17
hanako's email:hanako@email.com
|
特定のデータにアクセスできていることが分かります。
辞書型→文字列型への変換
json.load()で読み込むと辞書型になります。Pythonで読み込んだ辞書型の内容を文字列に変換する方法を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
|
import json
# ファイルオープン
with open('json_sample.txt') as file:
json_dict = json.load(file)
json_text = json.dumps(json_dict)
print(type(json_dict)) # <class 'dict'>
print(type(json_text)) # <class 'str'>
print(json_dict)
print(json_text)
|
実行結果は以下のようになります。
1
2
3
4
|
<class 'dict'>
<class 'str'>
{'ichiro': {'age': 20, 'gender': 'male', 'email': 'ichiro@email.com'}, 'jiro': {'age': 17, 'gender': 'male', 'email': 'jiro@email.com'}, 'hanako': {'age': 32, 'gender': 'female', 'email': 'hanako@email.com'}}
{"ichiro": {"age": 20, "gender": "male", "email": "ichiro@email.com"}, "jiro": {"age": 17, "gender": "male", "email": "jiro@email.com"}, "hanako": {"age": 32, "gender": "female", "email": "hanako@email.com"}}
|
json.dumps()で文字列型に変換できます。
ファイル保存
PythonでJSON形式のファイル保存する方法を紹介します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
|
import json
# 辞書の生成
json_dict = {"ichiro":{"age" : 20, "gender": "male" ,"email": "ichiro@email.com"}}
# ファイル書き込み
with open('json_sample2.txt', 'w') as file:
json.dump(json_dict, file)
# ファイル読み込み
with open('json_sample2.txt') as file:
print(json.load(file))
|
実行結果は以下のようになります。
1
|
{'ichiro': {'age': 20, 'gender': 'male', 'email': 'ichiro@email.com'}}
|
このようにPythonでは、JSON形式のファイル保存ができます。
整形
PythonでJSON形式を整形する方法を紹介します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
|
import json
# 辞書の生成
json_dict = {"ichiro":{"age" : 20, "gender": "male" ,"email": "ichiro@email.com"}}
# ファイル書き込み indent=4
with open('json_sample2.txt', 'w') as file:
json.dump(json_dict, file, indent=4)
# ファイル読み込み file.read()にすることで、整形されていることが確認できる。
with open('json_sample2.txt') as file:
print(file.read())
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
|
{
"ichiro": {
"age": 20,
"gender": "male",
"email": "ichiro@email.com"
}
}
|
file.read()にすることで、整形されていることが確認できます。
コマンドラインで解析
Pythonでは、コマンドラインでJSONファイルを解析できます。
実際のコマンドを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
~$ python -m json.tool json_sample.txt
{
"ichiro": {
"age": 20,
"gender": "male",
"email": "ichiro@email.com"
},
"jiro": {
"age": 17,
"gender": "male",
"email": "jiro@email.com"
},
"hanako": {
"age": 32,
"gender": "female",
"email": "hanako@email.com"
}
}
~$
|
- システム
エンジニア - なるほど。よく分かりました。
- プロジェクト
マネージャー - コマンドラインでJSONファイルを解析する方法も参考にしてください。
まとめ
いかがでしたでしょうか。PythonでJSONを扱う方法について説明しました。ここでは、JSONファイルの読み書きや、データアクセス、文字列への変換などについて紹介しました。また、コマンドラインでJSONファイルを解析する方法についても紹介しました。
ぜひご自身でソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
Python新着案件New Job
-
マルチロガーソフト開発/東京都豊島区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都豊島区(池袋駅) -
マルチロガーソフト開発/東京都豊島区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都豊島区(池袋駅) -
商品化予定の振動センサーの運用保守/Python/東京都都内/【WEB面談可】
月給50万~60万円東京都都内(-駅) -
商品化予定の振動センサーの可視化UI開発のテスター/Python/東京都都内/【WEB面談可】
月給25万~35万円東京都都内(-駅) -
商品化予定の振動センサーの運用保守/Python/東京都都内/【WEB面談可】
月給50万~60万円東京都都内(-駅) -
商品化予定の振動センサーの可視化UI開発のテスター/Python/東京都都内/【WEB面談可】
月給25万~35万円東京都都内(-駅)