【发布时间】:2022-01-12 04:46:52
【问题描述】:
运行以下代码后,我没有找到原因,
import xmlrpc.client
import json
from tkinter import *
app = Tk()
api = xmlrpc.client.ServerProxy("http://user:pass@localhost:8442/")
listAddress = api.listAddresses()
print (listAddress)
jsonAddresses = json.loads(listAddress)
print (jsonAddresses)
它告诉我 JSON 对象必须是一个字符串。我在那里添加了print (listAddress),以表明它实际上是一个 JSON 格式的字符串,并且输出在告诉我它需要是一个字符串之前将其打印出来。此处显示:
{'addresses': [{'chan': False, 'address': 'BM-2cXU266jqEXWN9GZ3syVP9dNiWM59z8br8', 'enabled': True, 'stream': 1, 'label': 'unused API address'}, {'chan': False, 'address': 'BM-NB21wfaCzZvmX7BFrat1zSocRuYCMVvQ', 'enabled': True, 'stream': 1, 'label': 'unused API address'}]}
Traceback (most recent call last):
File "/home/otsudo/Code/part_manager-master/help.py", line 13, in <module>
jsonAddresses = json.loads(listAddress)
File "/usr/lib/python3.8/json/__init__.py", line 341, in loads
raise TypeError(f'the JSON object must be str, bytes or bytearray, '
TypeError: the JSON object must be str, bytes or bytearray, not dict
我必须在这里遗漏一些东西。感谢所有帮助。
【问题讨论】:
-
listAddress是dict,json.dumps(listAddress)是字符串。 -
@Otsubosan 你知道listAddress 的类型吗? json.loads 只接受字符串作为参数。
-
我自己试过直接访问
https://demotivation-quotes-api.herokuapp.com/graphql,看来这个端点根本不是RESTful API接口……你自己试过了吗? -
@rubys 谢谢!这更有意义。我对使用 json 还很陌生,所以我猜这很明显是我错过的。