我正在向外部 WDSL 服务发送请求,该服务由于某种原因返回了一个巨大的对象。我正在使用 连接SOAPpy
,我想将结果解析为 JSON。但是我在对象中得到了很多对象,就像这样。
<SOAPpy.Types.structType incident at 53129728>:
有什么办法可以用 SOAPpy 解析这个对象吗?我是第一次使用这个 SOAPpy。
如果您使用的是 SOAPpy - 有一种方法可以将 SOAPpy 对象转换为本机 Python 对象 - 然后将其放入 json.dumps 中而不会出错。
soappyobject = SOAPProxy.someMethod()
pythonobject = SOAPProxy.Types.simplify(soapyobject)
jsonobject = json.dumps(pythonobject)
...至少 - 到目前为止,它对我放入的每个对象都有效。
不幸的是,它不适用于 SOAPpy.WSDL 可以返回的 WSDL 对象。
这对我有用:
pythonObject = SOAPpy.Types.simplify(soapObject)
jsonObject = json.dumps(pythonObject)
我有同样的问题,我在这里找到了解决方案:
https://github.com/paultag/deapi/blob/master/deapi/emitters.py
基本上你已经创建了一个 Encoder json 类并提供转储类进行编码。
像这样的东西:
class DateEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, date):
return str(obj)
if isinstance(obj, structType):
obj = obj._asdict()
return obj
return json.JSONEncoder.default(self, obj)
还有他们:
response = json.dumps(response,sort_keys=True, indent=4, cls=DateEncoder)