小编典典

无法解析JSON文件中的TAB

json

加载似乎包含 TAB 字符的JSON文件时,我遇到了解析问题。

当我转到http://jsonlint.com/时,我输入了带有TAB字符的部分:

{
    "My_String": "Foo bar.  Bar foo."
}

验证者抱怨:

Parse error on line 2:
{    "My_String": "Foo bar. Bar foo."
------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

这实际上是有问题的JSON文本的复制/粘贴。

我曾尝试加载该文件,jsonsimplejson没有成功。如何正确加载?我应该只预处理文件并用\t空格替换TAB 吗?还是我在这里想念的东西?

更新:

这也是一个有问题的示例simplejson

foo = '{"My_string": "Foo bar.\t Bar foo."}'
simplejson.loads(foo)

JSONDecodeError: Invalid control character '\t' at: line 1 column 24 (char 23)

阅读 1060

收藏
2020-07-27

共1个答案

小编典典

JSON标准

在任何令牌之前或之后都可以使用无关紧要的空格。空格字符是:字符列表(U + 0009),换行符(U + 000A),回车符(U + 000D)和空格(U
+ 0020)。除令牌中允许使用空格外,任何令牌中都不允许使用空格。

这意味着在JSON字符串中不允许使用文字制表符。您需要将其转义为\t (在.json文件中)

{"My_string": "Foo bar.\t Bar foo."}

此外,如果在Python字符串文字中提供了json文本,则需要对标签进行两次转义:

foo = '{"My_string": "Foo bar.\\t Bar foo."}' # in a Python source

或使用Python原始字符串文字:

foo = r'{"My_string": "Foo bar.\t Bar foo."}' # in a Python source
2020-07-27