停止json.loads将true或false大写为值

2024-06-16 11:41:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些JSON看起来像这样

...
"aaa": "play",
"bbb": "fxc",
"ccc": true,
"ddd": "nat",
"eee": "news",
...

当我对这个字符串调用json.loads(my_json)时,它将把true转换成True。有没有办法不这样做


Tags: 字符串jsontrueplaymynatnewsbbb
2条回答

在Python中,可以使用true作为字符串"true",true值为True,false为False
当您使用json.loads时,需要将JSON转换为dict,并将所有JS格式的值转换为Python值

目前,您似乎希望有效地将JSON布尔值视为术语“true”和“false”的字符串文本

使用^{}参数:

>>> def no_bool_convert(pairs):
...     return {k: str(v).casefold()
...             if isinstance(v, bool) else v for k, v in pairs}
>>> json.loads('{"foo": "fxc", "ccc": true}',
...            object_pairs_hook=no_bool_convert)
{'foo': 'fxc', 'ccc': 'true'}

注意,这并没有从根本上重写JSON解析器;该值仍被解析为布尔值,但随后会转换回小写str

相关问题 更多 >