调用xmlrpc API后执行json.loads报错提示需传入字符串问题求助
问题原因
xmlrpc.client的ServerProxy调用远程接口后,会自动将返回的XML-RPC结构反序列化为Python原生数据类型,你这里api.listAddresses()返回的已经是dict类型,不是JSON字符串,不需要再调用json.loads()做解析。
你看到打印出来的内容长得像JSON,其实是Python字典的标准输出格式,和JSON字符串的核心区别是:Python字典默认用单引号包裹字符串,JSON规范要求必须用双引号,你打印结果里的'addresses'类单引号内容,已经可以证明它是字典而非JSON字符串。
解决方法
直接删掉jsonAddresses = json.loads(listAddress)这行代码即可,listAddress本身就是你需要的结构化数据,直接操作使用即可:
import xmlrpc.client import json from tkinter import * app = Tk() api = xmlrpc.client.ServerProxy("http://user:pass@localhost:8442/") listAddress = api.listAddresses() print(listAddress) # 可直接读取字典内容,示例如下 for addr_item in listAddress['addresses']: print(addr_item['address'])
如果后续有需要将该字典转为JSON字符串的场景,可调用json.dumps(listAddress)实现转换。
内容的提问来源于stack exchange,提问作者Otsubosan
相关产品推荐
相关产品推荐

