【问题标题】:json load JSONDecodeError: Expecting ',' delimiterjson 加载 JSONDecodeError: Expecting ',' 分隔符
【发布时间】:2020-06-26 22:16:38
【问题描述】:

我的 json 文件有问题,这是我的代码:

import json
x= '{ "receive_time": "2020-06-26T08:04:27+07:00", "services": "", "request_uri": "/", "request_body": "{\x22p\x22:\x22smaet\x22,\x22av\x22:\x225.9.0\x22}"}'
json.loads(x)

详细错误:需要 ',' 分隔符:第 1 行第 103 列(字符 102) 我想要的结果:

{'receive_time': '2020-06-26T08:04:27+07:00',
 'services': '',
 'request_uri': '/',
 'request_body': '{"p":"smaet","av":"5.9.0"}'}

请帮帮我,谢谢

【问题讨论】:

    标签: json python-3.x


    【解决方案1】:

    request_body 的字符串值格式错误。

    作为 json 字符串,\x22(双引号)必须有反斜杠转义。 https://www.json.org/json-en.html

    反斜杠也是 Python 字符串文字中的转义字符。字符串文字中的转义序列\\ 表示单个字符\。

    所以下面的代码

    import json
    x = '{ "receive_time": "2020-06-26T08:04:27+07:00", "services": "", "request_uri": "/", "request_body": "{\\\x22p\\\x22:\\\x22smaet\\\x22,\\\x22av\\\x22:\\\x225.9.0\\\x22}"}'
    print(json.loads(x))
    

    打印

    {'receive_time': '2020-06-26T08:04:27+07:00', 'services': '', 'request_uri': '/', 'request_body': '{"p":"smaet","av":"5.9.0"}'}
    

    【讨论】:

      【解决方案2】:

      您必须在 x222 之前的字符串中使用 3 个斜杠,因为一个 \ 用于特殊序列。两个斜线用于接受单个斜线,3 个斜线用于您想要的输出。

      import json
      x= '{ "receive_time": "2020-06-26T08:04:27+07:00", "services": "", "request_uri": "/","request_body": "{\\\x22p\\\x22:\\\x22smaet\\\x22,\\\x22av\\\x22:\\\x225.9.0\\\x22}"}'
      data = json.loads(x)
      print(data);
      

      【讨论】:

      • 嗨,当我使用:x.replace('\x22','\\\x22') 然后 x 变为:'{\\"request_body\\": \\"{\\" p\\":\\"smaet\\",\\"av\\":\\"5.9.0\\"}\\"}' .
      猜你喜欢
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 2022-06-11
      • 2021-09-29
      • 2019-08-06
      • 2020-04-19
      相关资源
      最近更新 更多