1

我有一个想要接收dict类型参数的 SOAP 服务方法。

目前我正在使用以下方法解决这个问题:

class KeyValue(ComplexModel):
    key = Mandatory.Unicode
    value = Mandatory.Unicode

和:

class ASoapService(ServiceBase):

    @rpc(KeyValue.customize(min_occurs=0, max_occurs='unbounded'))
    def a_method(ctx, a_dict):
        # here a_dict is a list of KeyValue instances
        # convert it to a real dict
        a_dict = {item.key: item.value for item in a_dict}
        ...

这意味着使用 JSON 客户端到该服务我会通过:

{"a_method":
  {"a_dict": [
    {"key": "key1", "value": "value1"},
    {"key": "key2", "value": "value2"},
    ...
  ]}
}

这是丑陋的,imo。

有没有更好的方法将 Python 字典映射到 WSDL 类型,以便能够通过:

{"a_method":
  {"a_dict": {
    "key1": "value1",
    "key2": "value2",
    ...
  }
}
4

0 回答 0