解析我的 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