{
"abc": null,
"def": 9
}
このようなJSONデータがあります。 nullでない場合(文字列として引用符なし)、ast
モジュールのliteral_eval
を使用して上記を辞書に変換できます。
Pythonのディクショナリは、値としてnull
を持つことはできませんが、値として"null"
を持つことができます。上記をPythonが認識する辞書に変換するにはどうすればよいですか?
組み込みの json
module を使用する必要があります。これは、このタスク用に明示的に設計されたものです。
>>> import json
>>> data = '''
... {
... "abc": null,
... "def": 9
... }
... '''
>>> json.loads(data)
{'def': 9, 'abc': None}
>>> type(json.loads(data))
<class 'dict'>
>>>
ところで、JSONデータにnull
値が含まれていない場合でも、このメソッドを使用する必要があります。動作する場合もありますが(時には)、ast.literal_eval
は、文字列として表されるPythonコードを評価するために設計されました。 JSONデータを操作するのは、単に間違ったツールです。
1つの解決策は、Noneを含む変数を使用することです。
import json
null = None
data = { "test": null }
json.dumps(data)