Python

【Python】JSONを辞書型で読み込む方法

【Python】JSONを辞書型で読み込む方法

こんにちは。さすをです。

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

今回の記事は、JSON形式のファイルを辞書型で読み込む方法を紹介していきます。

それでは本文をどうぞ。

困っている女性
困っている女性

JSONファイルを辞書型っていう型で読み込めるらしいんだけど、よくわからない、、

読み込んだあと、どうやれば値を取り出すことができるのよ、、

さすを
さすを

その悩みを解決します!

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

  • JSONを辞書として読み込む方法
  • 読み込んだ辞書の値の取得・変更・削除・追加方法
  • 辞書をJSON文字列としてファイル出力する方法

筆者の情報:

  • 現役システムエンジニア 兼 副業ブロガー
  • 過去に6,000万のPython案件を受注
スポンサーリンク

1.JSON形式のファイルを辞書として読み込む方法

1.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を辞書として読み込むためには、json.load()を使います。

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

#読み込むファイルのパスを指定
#'r'はreadの略
json_file = open('blog_data/sample.json', 'r')

#辞書型で読み込む(json.load())
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)を設定しましょう。

open('blog_data/sample.json','r',encoding='unicode-escape')


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

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

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

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

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

さすを
さすを

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

# jsonを読み込むときに必ず使用するモジュール
import 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'}

3.読み込んだ辞書の値の取得・変更・削除・追加方法

3.読み込んだ辞書の値の取得・変更・削除・追加方法

3-1.値の取得

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

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

import 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}

print(dic["Age"]["Satoshi"])
#40

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

import 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

3-2.値の変更

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

import 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'}

3-3.キーと値の追加

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

import 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'}

3-4.キーと値の削除

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

{ "name": "satoshi", "age": 40, "color": "blue", "hobby": "fishing" }
import 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}]}

4.辞書をJSON文字列としてファイル出力する方法

4.辞書をJSON文字列としてファイル出力する方法

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

import 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"

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

5.Pythonスキルを伸ばす方法とは?

5-1.独学編

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

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

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

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

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

5-2.スクール編

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

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

本気でPythonスキルを身につけたい方は、スクールで一気にスキルを身に着けるのもありでしょう。

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

6.おわりに

6.おわりに

6,000万のPython案件に携わった経験のある筆者が、JSON形式のファイルを辞書型で読み込む方法を紹介してきました。

Python開発においてjsonを扱うことは非常に多いので、改めて確認しておきましょう!

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

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

それでは!

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

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

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

コメント

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