PythonとJSONでブール値を扱う際には注意が必要です。Pythonでは、ブール値はTrue
とFalse
で表現されますが、JSONではそれぞれtrue
とfalse
と小文字で表現されます。
Pythonのjson
モジュールのdumps
関数を使うと、PythonオブジェクトをJSON形式の文字列に変換できます。このとき、PythonのTrue
やFalse
は自動的にJSONのtrue
やfalse
に変換されます。
例えば、次のようなPythonコードを考えてみましょう。
import json
data = {
"name": "TEST",
"warning": 200,
"critical": 400,
"metric": "test",
"maxCheckAttempts": 3,
"isMute": True # Pythonのブール値
}
json_str = json.dumps(data)
print(json_str)
このコードを実行すると、"isMute"
の値がPythonのTrue
からJSONのtrue
に変換されて出力されます。
しかし、注意点として、JSONのブール値をPythonの文字列として扱ってしまうと、期待した結果が得られない場合があります。例えば、次のようなコードを考えてみましょう。
item = {"reviews_allowed": "false"} # "false"は文字列
この場合、"reviews_allowed"
の値は文字列の"false"
となり、これをPythonのブール値として扱うとTrue
となってしまいます。なぜなら、Pythonでは非空の文字列はTrue
と評価されるからです。
したがって、PythonとJSONでブール値を扱う際には、適切な型を使用することが重要です。