【发布时间】:2018-11-16 05:33:54
【问题描述】:
当我尝试加载“foo.com”时,正如预期的那样,我得到了一个异常;但是,如果我正在加载一个包含浮点数的字符串,它就可以工作。只是想弄清楚为什么会这样。
$ python3
Python 3.6.5 (default, Jun 17 2018, 12:13:06)
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import json
>>> j = json.loads("foo.com")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
>>> j = json.loads("123.6")
>>>
【问题讨论】:
-
因为
123.6是有效的JSON,但foo.com(不带引号!)不是? -
@ForceBru 都被引用,因此都应该是字符串。
-
@DeepSpace,因为语法不允许:tools.ietf.org/html/rfc7159#section-2
-
@FranzKafka,它们是 Python 的字符串,但不是 JSON 解析器。
-
123.6是有效的数字文字,"foo.com"是有效的字符串文字,但foo.com不是有效的 json
标签: json python-3.x