【问题标题】: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 是从哪里来的?另外,请提供完整的错误信息。
  • 这是因为字符串中的反斜杠,您必须对它们进行双重转义。

标签: python json python-3.x scrapy html-escape-characters


【解决方案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')])

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 2019-07-19
相关资源
最近更新 更多