こんにちはフロントエンドエンジニアのまさにょんです!
今回は、PythonでJSONデータを読み込む方法(load)と作成する方法(dumps)、エンコードとデコードについて解説します。
目次
PythonでJSONデータを読み込む方法(load)と作成する方法(dumps)
テストのためにJSONファイルを作成
まずは、テストのために読み込むJSONファイルを作成します。
{
"robotama": "ロボ玉",
"purupuru_flag": true,
"age": 2,
"from": "神聖グンマー帝国",
"brother_list": [
"ロボ玉試作1号機",
"ロボ玉試作2号機",
"ロボ玉試作3号機"
],
"skill": {
"purupuru": "ぷるんぷるん",
"hamham": "はむはむ",
"sleep": "すやー"
}
}
JSONデータを読み込む方法(load)と作成する方法(dumps)
JSONデータを読み込む(decodeする)場合はjson.load()
でJSON文字列をパース(decode)して取り扱います。
また、JSONデータを作成する場合はjson.dumps()
に辞書型などのデータを渡すとJSONデータに変換してくれます。
json.dumps()
をする際に、引数に ensure_ascii=False を設定しておくと、日本語をそのまま表示ができます。
さらに、indent=2 と引数を設定すると、半角スペース2つ分のインテンドも設定できます。
### JSONデータの読み込みと作成方法(load, dumps)、エンコードとデコードの方法 ###
# 1. jsonを取り扱うためのモジュールをimportする
import json
import pprint
# 2. JSONファイルを読み込む
jsonFile = open('./Robotama.json', 'r', encoding="utf-8")
# 3. JSONファイルは、Pythonだと「_io.TextIOWrapper」というClass
print(type(jsonFile))
# 出力結果: <class '_io.TextIOWrapper'>
# 4. json.load() でJSON文字列をパース(decode)する => JSON文字列を読み込む
parseData = json.load(jsonFile)
# 5. json.load() をすると、JSON文字列は辞書型(dict)になる!
print(type(parseData))
# 出力結果: <class 'dict'>
# 6. 辞書型(dict)のデータ
pprint.pprint(parseData)
# < 出力結果 >
# {'age': 2,
# 'brother_list': ['ロボ玉試作1号機', 'ロボ玉試作2号機', 'ロボ玉試作3号機'],
# 'from': '神聖グンマー帝国',
# 'purupuru_flag': True,
# 'robotama': 'ロボ玉',
# 'skill': {'hamham': 'はむはむ', 'purupuru': 'ぷるんぷるん', 'sleep': 'すやー'}}
# 7. 辞書型の取り出し方で、データを取り出す
print(parseData['robotama'])
# 出力結果: ロボ玉
print(parseData['brother_list'][0])
# 出力結果: ロボ玉試作1号機
print(parseData['skill']['purupuru'])
# 出力結果: ぷるんぷるん
# 8. json.dumps() で、辞書型をJSON-文字列に変換する => JSON-encoding
jsonEncode = json.dumps(parseData, ensure_ascii=False, indent=2)
# 9. json.dumps の引数
# ensure_ascii=False を設定しておくと、日本語をそのまま表示できる => Unicode-Escape をさせない。
# indent=2 => インテンドの指定もできる!
# 10. JSON-文字列に、encodingしているので型は str型になる
print(type(jsonEncode))
# 出力結果: <class 'str'>
print(jsonEncode)
# < 出力結果 >
# {
# "robotama": "ロボ玉",
# "purupuru_flag": true,
# "age": 2,
# "from": "神聖グンマー帝国",
# "brother_list": [
# "ロボ玉試作1号機",
# "ロボ玉試作2号機",
# "ロボ玉試作3号機"
# ],
# "skill": {
# "purupuru": "ぷるんぷるん",
# "hamham": "はむはむ",
# "sleep": "すやー"
# }
# }
Twitterやってます!Follow Me!
神聖グンマー帝国の逆襲🔥
神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!