python - 在 python 中序列化一个 suds 对象

标签 python soap pickle suds

好的,我正在努力提高 python 的使用率,所以我不确定这是开始我正在做的事情的正确方法,但这是我当前的问题...

我需要通过 SOAP 方法获取一些信息,现在只使用部分信息,但存储整个结果以供将来使用(我们需要尽可能少地使用该服务)。在寻找访问该服务的最佳方式时,我认为泡沫是可行的方式,而且它很简单,而且在获取数据方面非常有效。但现在我想以某种方式保存结果,最好是序列化/在数据库中,这样我可以稍后将其取出并使用它。

执行此操作的最佳方法是什么,看起来 pickle/json 不是一个选项?谢谢!

更新How can I pickle suds results? 阅读最佳答案让我更好地理解为什么这不是一个选项,我想我一直在用我需要的信息重新创建一个基本对象?

最佳答案

我一直在使用以下方法将 Suds 对象转换为 JSON:

from suds.sudsobject import asdict

def recursive_asdict(d):
    """Convert Suds object into serializable format."""
    out = {}
    for k, v in asdict(d).items():
        if hasattr(v, '__keylist__'):
            out[k] = recursive_asdict(v)
        elif isinstance(v, list):
            out[k] = []
            for item in v:
                if hasattr(item, '__keylist__'):
                    out[k].append(recursive_asdict(item))
                else:
                    out[k].append(item)
        else:
            out[k] = v
    return out

def suds_to_json(data):
    return json.dumps(recursive_asdict(data))

关于python - 在 python 中序列化一个 suds 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2412486/

相关文章:

python - 无法保存 pickle 的 MongoEngine 文档

python - 如何在 Python 中将对象数组保存到文件中

python - 如何使用其依赖项来 pickle python 函数?

python - 值错误 : Wrong number of items passed - Meaning and suggestions?

python - 如何使用正则表达式做反向搜索?

python - Python 是否有类似于 .net c# PInvoke 的东西?

ruby 网络服务

python - 如何使用python给文本添加标点符号?

java - 将 javax.xml.ws.Endpoint 与 HTTPS 结合使用

c# - 使用 RAW SOAP XML 提交 SOAP Web 服务请求