解析我的 json 时出现问题,我得到这个“JSONDecodeError: Invalid \escape”

Posted

技术标签:

【中文标题】解析我的 json 时出现问题,我得到这个“JSONDecodeError: Invalid \\escape”【英文标题】:Issues parsing my json, I am getting this "JSONDecodeError: Invalid \escape"解析我的 json 时出现问题,我得到这个“JSONDecodeError: Invalid \escape” 【发布时间】:2020-07-01 23:31:39 【问题描述】:
my_json = '"hello":"\\x20\\x20\\x20\\x3Cdiv\\x3E\\x20\\x0A\\x20\\x20\\x20\\x20\\HELLO"'

json.loads(my_json)

我明白了。

JSONDecodeError: Invalid \escape: line 1 column 11 (char 10)

我需要使用什么转换才能加载我的 json?

【问题讨论】:

那个 JSON 是从哪里来的?另外,请提供完整的错误信息。 这是因为字符串中的反斜杠,您必须对它们进行双重转义。 【参考方案1】:

只需先将 python 字符串转换为 json 即可。

my_json = json.dumps(
              "hello":"\\x20\\x20\\x20\\x3Cdiv\\x3E\\x20\\x0A\\x20\\x20\\x20\\x20\\HELLO"
                )
json.loads(my_json)

【讨论】:

"hello":"\x20\x20\x20\x3Cdiv\x3E\x20\x0A\x20\x20\x20\x20\HELLO" 与 OP 的数据相同,即'"hello":"\\x20\\x20\\x20\\x3Cdiv\\x3E\\x20\\x0A\\x20\\x20\\x20\\x20\\HELLO"'只需先将 python 字符串转换为 json,它就会为您工作。 这没什么意义,而且这肯定不是您共享的代码所做的。【参考方案2】:

@pguardiario 的建议肯定更干净,但如果您只是在得到dict 之后,请尝试eval:

In [77]: my_json                                                                
Out[77]: '"hello":"\\x20\\x20\\x20\\x3Cdiv\\x3E\\x20\\x0A\\x20\\x20\\x20\\x20\\HELLO"'

In [78]: evaluated = eval(my_json)                                                          
Out[78]: 'hello': '   <div> \n    \\HELLO'

In [79]: evaluated.items()                                                      
Out[79]: dict_items([('hello', '   <div> \n    \\HELLO')])

【讨论】:

请不要建议使用eval,一些开发人员会发现这一点,并在他们的应用程序中留下一个安全漏洞而不加考虑。 ***.com/questions/1832940/…

以上是关于解析我的 json 时出现问题,我得到这个“JSONDecodeError: Invalid \escape”的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 iOS 7 下使用 SwiftyJSON 解析 JSON 数据时出现未知类型

使用 Alamofire 解析 json 时出现 AppDelegate 错误

通过 Ajax 解析 PHP 文件获取的 JSON 数据时出现问题

解析 JSON 对象时出现 NoClassDefFoundError JsonAutoDetect

Web Scraping:在 Python 中解析 JSON 时出现 KeyError

Swift 解析 JSON 时出现问题:无法将“__NSCFDictionary”类型的值转换为“NSArray”错误