【问题标题】:Error convert Json string to Python Dictionary将 Json 字符串转换为 Python 字典时出错
【发布时间】:2020-03-12 02:46:45
【问题描述】:

我有如下的 json 文件并尝试转换为 python 字典但出现错误

{
  "response": {
    "dev_log": {
      "data": [
        {
          "id": "1",
          "timestamp": "2020-01-16 10:11:12",
          "email": "johnd@gmail.com"
        },
        {
          "id": "2",
          "timestamp": "2020-02-27 15:33:34",
          "email": "zack@gmail.com"
        },
        {
          "id": "3",
          "timestamp": "2020-02-27 15:34:07",
          "email": "edy@yahoo.com"
        }
      ],
      "total_dev_log": "1423"
    },
    "client_log": {
      "data": [
        {
          "customer_city": "LONDON",
          "customer_login": "AAAAAAAAAAAAAA",
          "customer_state": "MC",
          "details": "aaaaaaaaaaa-bbbbbbbbbbbbbbb-cccccccccccccc ",
          "log_number": "1",
          "dept": "Sales",
          "staff_id": "S123",
          "staff_name": "EricY",
          "timestamp": "2020-02-27 15:57:24"
        },
        {
          "customer_city": "SINGAPORE",
          "customer_login": "BBBBBBBBBBBBB",
          "customer_state": "XX",
          "details": "ddddddddd-eeeeeeeeeeee-ffffffffffff ",
          "log_number": "1",
          "dept": "Eng",
          "staff_id": "S456",
          "staff_name": "YongG",
          "timestamp": "2020-02-27 15:57:24"
        }
      ],
      "total_hero_query": "13"
    },
    "response_time": "0.723494",
    "transaction_id": "909122",
    "transaction_status": "OK",
    "transaction_time": "Fri Feb 28 15:27:51 2020"
  }
}

我可以通过http://jsonviewer.stack.hu 将其视为有效的 json。我相信它是一种有效的 json 字符串格式。

Normallay 我只是使用下面的代码来读取 json 文件并将其转换为 dict 但我得到了错误。

with open('datfile.json', 'r') as f:
   datDict = json.load(f)

错误

Traceback (most recent call last):
  File "strg2dict.py", line 4, in <module>
    json_dict = json.load(JSON)
  File "/usr/lib/python2.7/json/__init__.py", line 291, in load
    **kw)
  File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 380, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 22 column 5 (char 466)

我检查了其他解决方案,但仍然无法找到解决方案。请进一步告知。谢谢

@@@@@@@@@@@@@@@@@@@@@@@@@@@ 有逗号 "total_dev_log": "1423",

===> 去掉逗号 “total_dev_log”:“1423”

已解决>谢谢

【问题讨论】:

  • 那不是有效的 json。您在第 21 行有一个尾随逗号:"total_dev_log": "1423",
  • 异常已经告诉你错误的地方了:line 22 column 5 (char 466).
  • jsonviewer.stack.hu 过于宽松。使用jsonlint.com,报错。
  • 我已经检查了上面所说的行...我的错误...谢谢您先生...jsonviewer.stack 没有检测到错误

标签: python json list dictionary


【解决方案1】:

您的 json 文件在第 21 行包含一个尾随逗号:

"total_dev_log": "1423",
                       ^ 

JSON 规范does not allow for trailing commas。只需删除此逗号即可更正错误。

【讨论】:

  • 谢谢先生。我已经更正了这条线。好的。谢谢
  • @chenoi 很高兴这解决了您的问题。如果我的答案足够,请考虑将其标记为已接受,以便可以从未回答的问题池中删除此问题。请参阅this help center topic 了解更多信息。
猜你喜欢
  • 2012-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 2013-03-13
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多