首页 > 解决方案 > 使用 json.load() 加载 JSON 文件时出现 Python 解释器错误

问题描述

这是我用于解析 JSON 文件的 python 代码。

import os
import argparse
import json
import datetime


ResultsJson = "sample.json"
try:
    with open(ResultsJson, 'r') as j:
        jsonbuffer = json.load(j)
        result_data = json.loads(jsonbuffer)
        print("Just after loading json")
except Exception as e:
        print(e, exc_info=True)

我收到一个错误,如下面的快照所示。 在此处输入图像描述

我还附上了我在这里使用的 JSON 文件“sample.json”。 示例.json

{
  "idx": 1,
  "timestamp": 1562781093.1182132,
  "machine_id": "tool_2",
  "part_id": "af71ce94-e9b2-47c0-ab47-a82600616b6d",
  "image_id": "14cfb9e9-1f38-4126-821b-284d7584b739",
  "cam_sn": "camera-serial-number",
  "defects": [
    {
      "type": 0,
      "tl": [169, 776],
      "br": [207, 799]
    },
    {
      "type": 0,
      "tl": [404, 224],
      "br": [475, 228]
    },
    {
      "type": 1,
      "tl": [81, 765],
      "br": [130, 782]
    }
  ],
  "display_info": [
    {
      "info": "DEFECT DETECTED",
      "priority": 2
    }
  ]
}

不知道我在这里错过了什么。我对 Python 很陌生(来自 C++ 背景)。如果我错过了一些基本的东西,请对我放轻松。

标签: pythonjsonpython-3.x

解决方案


你不需要这一行:

result_data = json.loads(jsonbuffer)

...因为jsonbuffer是 的结果json.load,所以已经是解析JSON文件的结果了。在你的情况下,它是一个 Python 字典,但json.loads需要一个字符串,所以你会得到一个错误。

此外,正如第二条错误消息所说,exc_info它不是print函数的有效关键字参数。如果您想打印异常,只需执行print(e).


推荐阅读