Python

【初心者向け】PythonでJSONを辞書型で読み込む方法

【初心者向け】PythonでJSONを辞書型で読み込む方法
スポンサーリンク

こんにちは、さすを(@sasuwo0409)です。

以前、6,000万のPython案件に携わりました。

今回の記事は、JSON形式のデータを辞書型で読み込む方法を解説していきます。

実例を用いて解説しているので、使い方も含めて理解できると思います。

それでは本文をどうぞ。

困っている人
困っている人

JSONファイルを辞書型という型で読み込めるらしいけど、よくわからないです。

初心者でもわかるように説明してほしいです、、。

さすを
さすを

この悩みを解決します!

この記事を読むとわかること:

  • JSONを辞書型で読み込む方法
  • 辞書型のデータをJSON文字列で書き込む方法
  • 読み込んだ辞書の値の取得・変更・削除・追加方法

筆者の情報:

  • 現役システムエンジニア 兼 副業ブロガー
  • 過去に6,000万のPython案件を受注
  • 最近ハマっているのは機械学習

※0円のサンプルテキストという近道

独学よりプログラミングスクールの方が効果は出やすいですが、値段が高く、なかなか手を出しづらいですよね。techgymでは無料のサンプルテキストと解説動画をもらえるので、これを使ってお得にPythonの基礎を学ぶのもオススメです。

スポンサーリンク

1.PythonでJSONを辞書型で読みこむ方法

1.PythonでJSONを辞書型で読みこむ方法

今回は「sample.json」というJSONデータを使用します。また、フォルダ構成は以下の通りです。

#sample.json:
{
    "Age": { "Satoshi": 40, "Kazunari": 37 },
    "Test": [{ "Math": 70, "English": 60 },
        { "Math": 95, "English": 40 }
    ],
    "Name": "Arashi"
}

注意:JSONは、ダブルクォーテーション(“)で文字列を囲います。シングルクォーテーション(‘)で囲んだり、変数名をそのまま記述するとValueErrorとなります。

#フォルダ構成:
JSON(フォルダ)
---sample.json
---read_json.py

1-1.JSONファイルを辞書型で読み込む方法

JSONを辞書型で読み込むためには「json.load()」を使います。

#read_json.py

#jsonを読み込むときに必ず使用するモジュール
import json

#読み込むファイルのパスを指定
#'r'はreadの略
json_file = open('フォルダの場所を記載する(今回はJSON)/sample.json', 'r')

#辞書型で読み込む
json_dict = json.load(json_file)

# 表示
print(json_dict)
#出力結果:
{'Age': {'Satoshi': 40, 'Kazunari': 37}, 'Test': [{'Math': 70, 'English': 60}, {'Math': 95, 'English': 40}], 'Name': 'Arashi'}
さすを
さすを

あっという間にJSONファイルを辞書型で読み込むことができました!

補足:
出力結果が文字化けしている場合は、open()関数の引数でエンコーディング(unicode-escape)を設定することで、文字化けを解消することができます。

#11行目:
open('blog_data/sample.json','r',encoding='unicode-escape')


万が一、エラーが発生してしまった場合は、【Python】JSON形式のファイル読み込み時にエラーがでた場合の対処方法の記事をご覧ください。

よくあるエラーをまとめているので、すぐに解決することができます。

1-2.JSON形式の文字列を辞書型に変換する方法

JSON形式の文字列を辞書型に変換するには「json.loads()」を使います。

さすを
さすを

json.load()と似ているので、注意してください!

#read_json.py

#jsonを読み込むときに必ず使用するモジュール
import json

#JSONデータの定義
st = '{"Age": { "Satoshi": 40, "Kazunari": 37 },"Test": [{ "Math": 70, "English": 60 },{ "Math": 95, "English": 40 }],"Name": "Arashi"}'

#辞書型に変換
dic = json.loads(st)

#表示
print(dic)
#出力結果:
{'Age': {'Satoshi': 40, 'Kazunari': 37}, 'Test': [{'Math': 70, 'English': 60}, {'Math': 95, 'English': 40}], 'Name': 'Arashi'}

1-3.読み込んだ辞書型の値の取得

辞書の値は、キーを指定して取得します。

ネスト(階層が深くなっている)した要素の値は[キー][キー]と連続して記述すればOKです。

#read_json.py

#jsonを読み込むときに必ず使用するモジュール
import json

##JSONデータの定義
st = '{"Age": { "Satoshi": 40, "Kazunari": 37 },"Test": [{ "Math": 70, "English": 60 },{ "Math": 95, "English": 40 }],"Name": "Arashi"}'

#辞書型に変換
dic = json.loads(st)

#取得したい値のキーを指定
#表示
print(dic["Age"])
print(dic["Age"]["Satoshi"])
#出力結果:
{'Satoshi': 40, 'Kazunari': 37}
40

辞書の値がリストになっており、リストの値を取得したい場合は、インデックスを指定すればOKです。

#read_json.py

#jsonを読み込むときに必ず使用するモジュール
import json

#JSONデータの定義
st = '{"Age": { "Satoshi": 40, "Kazunari": 37 },"Test": [{ "Math": 70, "English": 60 },{ "Math": 95, "English": 40 }],"Name": "Arashi"}'

#辞書型に変換
dic = json.loads(st)

#表示
print(dic["Test"][0]["Math"])
#出力結果:
70

1-4.読み込んだ辞書型の値の変更

値を変更したいときは、キーを指定して代入します。

#read_json.py

#jsonを読み込むときに必ず使用するモジュール
import json

#JSONデータの定義
st = '{"Age": { "Satoshi": 40, "Kazunari": 37 },"Test": [{ "Math": 70, "English": 60 },{ "Math": 95, "English": 40 }],"Name": "Arashi"}'

#辞書型に変換
dic = json.loads(st)

#変更したい値のキーを指定、代入
dic["Name"] = "Omiya_Combi"

#表示
print(dic)
#出力結果:
{'Age': {'Satoshi': 40, 'Kazunari': 37}, 'Test': [{'Math': 70, 'English': 60}, {'Math': 95, 'English': 40}], 'Name': 'Omiya_Combi'}

1-5.読み込んだ辞書型の値の追加

キーと値の追加は、存在しないキーを指定して、値を代入します。

#read_json.py

#jsonを読み込むときに必ず使用するモジュール
import json

#JSONデータの定義
st = '{"Age": { "Satoshi": 40, "Kazunari": 37 },"Test": [{ "Math": 70, "English": 60 },{ "Math": 95, "English": 40 }],"Name": "Arashi"}'

#辞書型に変換
dic = json.loads(st)

#キーと値の追加
dic["Combi_Name"] = "Omiya_Combi"

#表示
print(dic)
#出力結果:
{'Age': {'Satoshi': 40, 'Kazunari': 37}, 'Test': [{'Math': 70, 'English': 60}, {'Math': 95, 'English': 40}], 'Name': 'Arashi', 'Combi_Name': 'Omiya_Combi'}

1-6.読み込んだ辞書型の値の削除

キーと値の削除は「pop()メソッド」を使用します。

#read_json.py

#jsonを読み込むときに必ず使用するモジュール
import json

#JSONデータの定義
st = '{"Age": { "Satoshi": 40, "Kazunari": 37 },"Test": [{ "Math": 70, "English": 60 },{ "Math": 95, "English": 40 }],"Name": "Arashi"}'

#辞書型に変換
dic = json.loads(st)

#pop()メソッドで削除したいキーを指定
dic.pop("Name")

#表示
print(dic)
出力結果:
{'Age': {'Satoshi': 40, 'Kazunari': 37}, 'Test': [{'Math': 70, 'English': 60}, {'Math': 95, 'English': 40}]}
さすを
さすを

JSONを辞書型に読み込む基礎はこれでOKです!

スポンサーリンク

2.Pythonで辞書型のデータをJSON文字列としてファイル出力する方法

2.Pythonで辞書型のデータをJSON文字列としてファイル出力する方法

今回のフォルダ構成は以下の通りです。

#フォルダ構成:
JSON(フォルダ)
---write_json.py
---output.json(write_json.pyによってつくられるファイル)
さすを
さすを

それでは始めていきましょう!

辞書型のデータをJSON形式の文字列として出力するには「json.dumps()」を使用します。

#write_json.py

#jsonを読み込むときに必ず使用するモジュール
import json

#JSONデータの定義
st = '{"Age": { "Satoshi": 40, "Kazunari": 37 },"Test": [{ "Math": 70, "English": 60 },{ "Math": 95, "English": 40 }],"Name": "Arashi"}'

#辞書型に変換
dic = json.loads(st)

#データの追加
dic["Combi_Name"] = "Omiya_Combi"

#保存するファイルパスを指定
#'w'はwriteの略
#辞書をJSON形式の文字列に変換(第一引数:辞書名、第二引数:ファイル名、第三引数:インデントの数)
with open("output.json","w") as f:
    json.dump(dic,f,indent=4)
#出力結果:
#output.json
{"Age": {"Satoshi": 40, "Kazunari": 37}, "Test": [{"Math": 70, "English": 60}, {"Math": 95, "English": 40}], "Name": "Arashi", "Combi_Name": "Omiya_Combi"}
さすを
さすを

辞書型のデータをJSON文字列としてファイル出力することができました!

おまけ:Pythonのおすすめ学習法

この記事を読んでいるということは、おそらくPythonでつまずいている人だと思います。

Pythonは非常に奥が深い言語なので、あなたにあった学習をしないと、一向に成長することはできません。

といっても、学習法が正しいかどうかを見極めるのは難しいですよね。

ここでは、僕がPythonエンジニアになりたての頃に行っていた学習法を載せておきます。

「Pythonのおすすめ学習法がわからない!」という人は、ぜひ参考にしてみてください。

独学編:

Pythonスキルを独学で身に着けるためには、参考書が必須です。

おすすめのPython書籍を以下の記事で解説したので、参考にしていただけたらと思います。

>>【レベル別&徹底解説】 Python書籍のおすすめ8選

本を買う前に、一度Pythonの学習をしてみたいという人は、Pythonを学べるおすすめ学習サイトを以下の記事で解説しているので、こちらも参考にしてみてください。

>>【料金別&徹底解説】 Pythonおすすめ勉強サイト8選【楽しく学ぼう】

スクール編:

お金がかかってもいいから、少しでも早くPythonスキルを身につけたい人は、TechAcademy(テックアカデミー)のPythonコースがおすすめです。

エンジニアになれば、受講料は1か月もあれば回収できるので、問題なしです。

本気でPythonスキルを身につけたい人は、スクールで一気にスキルを身に着けることをおすすめします。

>>TechAcademy(テックアカデミー)のPythonコースはこちら

最後に:JSONの扱いは基礎中の基礎

ここまで、JSON形式のデータを辞書型で読み込む方法を解説していきました。

Python開発においてJSONを扱うことは非常に多いので、すぐに使えるようにしておくことが大切です。

といっても、暗記する必要はないので、分からなくなったらこの記事に戻って確認していただければと思います。

この記事が少しでもあなたの役に立てていたらうれしいです!

頑張るあなたを応援しています!

それでは!

あなたにおすすめの記事:

>>【無料】Pythonでできること9選【初心者でも稼げます】

>>【徹底解説】Pythonエンジニアに転職する方法【失敗しない方法を詳しく解説】

>>【これだけ知っておけばOKです】 現役エンジニアもよく使う便利なPythonライブラリ25選

コメント

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