はじめに
最近はcsv形式よりもjsonの方が紐づけなどに利点をより感じる。
会社で自分のデータをjson形式で管理しようか考えたりする
ここではpythonを用いてjsonファイルを扱う方法をまとめる
環境
windows 10
python version: 3.7.8
Code
JSONとは
JSON(JavaScript Object Notation)はインターネット上でデータのやり取り時に使われる手法の1つである。そのほかにXML, CSV、BSONなどがあり、JSONはネット上でよく使われるだけであって、特にJSONだけにこだわる必要はない。
しかし、JSONは高次元のデータ、例えば表の中に表が存在するようなデータ、において利点がある。
{
"employees": {
"1": {
"name": "Kobaayshi",
"age": 12,
"sex": "M"
},
"2": {
"name": "Tanaka",
"age": 33,
"sex": "W",
"hobby": [
"swim",
"golf"
]
},
"3": {
"name": "Suzuki",
"age": 26,
"sex": "M",
"family": {
"married": true,
"children": false
}
}
}
}
このように3人の従業員のデータがあるとするとき、それぞれの従業員番号1,2,3があり、その中に名前、年齢、性別が存在する。よってそれぞれの従業員の情報は従業員番号に紐づけられており、従業員番号さえあれば、他のデータベースに紐づけることができる。
jsonファイルの書き方
import json
data = {"employees": {
1: {
"name": "Kobaayshi",
"age": 12,
"sex": "M",
},
2: {
"name": "Tanaka",
"age": 33,
"sex": "W",
},
3: {
"name": "Suzuki",
"age": 25,
"sex": None,
},
}
}
f = open('./test.json', 'w')
json.dump(data, f, indent="\t")
f.close()
{
"employees": {
"1": {
"name": "Kobaayshi",
"age": 12,
"sex": "M"
},
"2": {
"name": "Tanaka",
"age": 33,
"sex": "W"
},
"3": {
"name": "Suzuki",
"age": 25,
"sex": null
}
}
}
open
のモード'w'
ではファイルが存在しなくても新しく生成され、ファイルが存在する場合は必ず上書きされる。
jsonファイルの読み方
f = open('./test.json', 'r')
f_json = json.load(f)
print(f_json)
f.close()
{'employees': {'1': {'name': 'Kobaayshi', 'age': 12, 'sex': 'M'}, '2': {'name': 'Tanaka', 'age': 33, 'sex': 'W'}, '3': {'name': 'Suzuki', 'age': 25, 'sex': None}}}
print(f_json["employees"]["3"])
# {'name': 'Suzuki', 'age': 25, 'sex': None}
print(f_json["employees"]["3"]["age"])
# 25
print(f'The age of {f_json["employees"]["3"]["name"]} is {f_json["employees"]["3"]["age"]}')
# The age of Suzuki is 25
キーワードで必要な情報を読み取ることができる。
jsonファイルの修正
f = open('./test.json', 'r')
f_json_modify = json.load(f)
print(f_json_modify["employees"]["3"])
# {'name': 'Kobaayshi', 'age': 12, 'sex': 'M'}
f_json_modify["employees"]["3"]["age"] += 1
f_json_modify["employees"]["3"]["sex"] = "M"
f_json_modify["employees"]["3"]["hobby"] = ["Swimming", "golf"]
# キーワードや値がなくても追加できる
# リストとしてデータを追加
print(f_json_modify["employees"]["3"])
# {'name': 'Suzuki', 'age': 26, 'sex': 'M', 'hobby': ['Swimming']}
f.close()
f = open('./test.json', 'w')
json.dump(f_json_modify, f, indent="\t")
f.close()
最終的なJOSNファイルの内容
{
"employees": {
"1": {
"name": "Kobaayshi",
"age": 12,
"sex": "M"
},
"2": {
"name": "Tanaka",
"age": 33,
"sex": "W"
},
"3": {
"name": "Suzuki",
"age": 26,
"sex": "M",
"hobby": [
"Swimming",
"golf"
]
}
}
}
まとめ
pythonでjsonを扱う方法をまとめた。
csv形式の方が社内データベースとしては良く使われる気がするが、高次元でデータを管理したい場合はJSON形式の方がよりメリットを感じる。firebase や mongodbのように、高次元データの利点がある。
特にデータの紐づけが大変な時はJSONですかね
参考