概要
JSONは本来JavaScript実行環境でJavaScriptとしてそのまま実行できることが特徴のデータ形式ですが、同じことをPythonでやる方法を思いついたのでメモ。
やり方
Pythonではbool値はTrue
,False
(先頭が大文字)、nullに相当する値はNone
ですが、幸いなことにJSONで使うture
,false
,null
はPythonにおいては予約語ではなく変数として定義できるので、これらにそれぞれTrue
,False
,None
を代入して定義すれば、Pythonの辞書リテラルをJSONと全く同じ表記で書くことができます。
JavaScriptとは違い、Pythonの辞書リテラルはキー名をクォーテーションで囲む必要があるのでよりJSONっぽいです。
true = True
false = False
null = None
print(
{
"name": "John",
"age": 30,
"married": true,
"divorced": false,
"children": [
{
"name": "Ann",
"age": 5
},
{
"name": "Sally",
"age": 7
}
],
"nulldata": null
}
)
# -> {'name': 'John', 'age': 30, 'married': True, 'divorced': False, 'children': [{'name': 'Ann', 'age': 5}, {'name': 'Sally', 'age': 7}], 'nulldata': None}
# 上記の表記が正当なJSONであることを確認するために同じ内容をjson.loadsでロードしてみる
import json
print(json.loads("""
{
"name": "John",
"age": 30,
"married": true,
"divorced": false,
"children": [
{
"name": "Ann",
"age": 5
},
{
"name": "Sally",
"age": 7
}
],
"nulldata": null
}
"""))
# -> {'name': 'John', 'age': 30, 'married': True, 'divorced': False, 'children': [{'name': 'Ann', 'age': 5}, {'name': 'Sally', 'age': 7}], 'nulldata': None}
使い道
あるの…?思いついたのはPythonコードを別のプログラムで生成しそこにJSONを埋め込むような時にプログラムや生成するPythonコード上でJSONをパースする処理を書く必要がなくなるくらい?