我正在向外部WDSL服务发送请求,由于某种原因,该服务返回一个巨大的对象。我正在使用SOAPpy
连接,我想将结果解析为JSON。但是,我在对象中得到了很多对象。
<SOAPpy.Types.structType incident at 53129728>:
有什么办法可以用Supappy解析这个对象?是我第一次使用这种肥皂。
如果您使用的是Supappy-有一种方法可以将苏粘的对象转换为本机Python对象 - 然后将其插入json.dumps而不会出错。
soappyobject = SOAPProxy.someMethod()
pythonobject = SOAPProxy.Types.simplify(soapyobject)
jsonobject = json.dumps(pythonobject)
...至少 - 它在我到目前为止掉进的每个对象上都起作用。
不幸的是,它在suappy.wsdl可以返回的WSDL对象上不起作用。
我也有同样的问题,我在这里找到了一个解决方案:
https://github.com/paultag/deapi/blob/master/deapi/emitters.py
基本上,您已经创建了一个编码器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)
这对我有用:
pythonObject = suappy.types.simplify(soapObject)
jsonObject = json.dumps(pythonobject)