{"error_code":"54001","error_msg":"Invalid Sign"} 'str' object has no attribute 'keys'
时间: 2023-07-02 08:19:52 浏览: 120
根据 API 返回的结果,出现了 "Invalid Sign" 的错误,这可能是生成签名时出现了问题。建议检查生成签名的代码,确认生成签名的参数和顺序是否正确。同时,建议将 appid 和密钥替换为您自己的 appid 和密钥。
另外,出现了 "'str' object has no attribute 'keys'" 的错误,这可能是因为在调用 `data.keys()` 时,`data` 变量的类型不是字典类型。这可能是因为在前面的代码中,`data` 变量被赋值为了字符串类型。建议在调用 `json.loads()` 方法前,检查一下返回结果的类型,以便正确地解析返回结果。例如:
```
resp = urllib.request.urlopen(url)
data = resp.read()
data = data.decode()
print(data) # 打印出 API 返回的完整结果
if isinstance(data, str):
data = json.loads(data)
if "error_code" in data.keys():
print("translate failed")
else:
dst = data["trans_result"][0]["dst"]
dst = dst.replace(",", "")
print(word, "--->", dst)
self.insert_update(word, dst)
```
在这里,我们先打印出 API 返回的完整结果,然后使用 `isinstance()` 方法检查返回结果的类型是否为字符串类型。如果是字符串类型,则调用 `json.loads()` 方法将其解析为字典类型。这样可以避免调用 `data.keys()` 时出现 "'str' object has no attribute 'keys'" 的错误。