错误json.decoder.JSONDecodeError:预期值:第1行第1列(字符0)

时间:2019-05-09 06:59:05

标签: json google-calendar-api temporary-files

我想创建一个临时的JSON文件来存储Google日历凭据,该凭据存储在“作业”对象中。 我正在使用ServiceAccountCredentials从文件中获取凭据。

Client = {
    "clientID": job.getClientID(),
    "clientSecret": job.getClientSecret()
}

temp = tempfile.NamedTemporaryFile(mode="w+b", suffix=".json")
complex_data = open(temp.name, "w", encoding="UTF-8")
complex_data.write(json.dumps(Client))
    # data = complex_data.write(json.dumps(Client))
    # z = json.loads(data)
credentials = ServiceAccountCredentials.from_json(
    temp.name
)
``` 

I get the following error:

Traceback (most recent call last):
  File "/var/www/library-offers-google-calendar/main.py", line 209, in <module>
    temp.name
  File "/var/www/library-offers-google-calendar/venv/lib/python3.7/site-packages/oauth2client/service_account.py", line 436, in from_json
    json_data = json.loads(_helpers._from_bytes(json_data))
  File "/usr/lib/python3.7/json/__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.7/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.7/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

1 个答案:

答案 0 :(得分:0)

方法ServiceAccountCredentials.from_jsondocs接受json数据,而不是json文件名。 如果要使用json文件名,则需要使用方法ServiceAccountCredentials.from_json_keyfile_name

否则,您可以直接使用Client字典作为ServiceAccountCredentials.from_json的参数,而无需创建和读取临时文件。