0

我正在向外部 WDSL 服务发送请求,该服务由于某种原因返回了一个巨大的对象。我正在使用 连接SOAPpy,我想将结果解析为 JSON。但是我在对象中得到了很多对象,就像这样。

<SOAPpy.Types.structType incident at 53129728>: 

有什么办法可以用 SOAPpy 解析这个对象吗?我是第一次使用这个 SOAPpy。

4

3 回答 3

1

如果您使用的是 SOAPpy - 有一种方法可以将 SOAPpy 对象转换为本机 Python 对象 - 然后将其放入 json.dumps 中而不会出错。

soappyobject = SOAPProxy.someMethod()
pythonobject = SOAPProxy.Types.simplify(soapyobject)
jsonobject = json.dumps(pythonobject)

...至少 - 到目前为止,它对我放入的每个对象都有效。

不幸的是,它不适用于 SOAPpy.WSDL 可以返回的 WSDL 对象。

于 2014-10-07T17:25:21.750 回答
0

这对我有用:

pythonObject = SOAPpy.Types.simplify(soapObject)

jsonObject = json.dumps(pythonObject)

于 2014-11-20T00:57:14.127 回答
0

我有同样的问题,我在这里找到了解决方案:

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)
于 2014-09-22T12:21:27.590 回答