Как получить массив в объекте на стороне клиента? - PullRequest
0 голосов
/ 06 ноября 2019

Я хотел бы получить массив в объекте на стороне клиента, но вместо этого мне нужно получить доступ к словарю, как это:

 response.BODY["string"]

Предпочтительным решением будет:

 response.BODY

Для кода ниже:

class ServerResponse(ComplexModel):
    BODY = Array(String)

    def __init__(self, BODY):
        self.BODY = BODY

class SomeService(ServiceBase):
    @rpc(_returns=ServerResponse)
    def reportEvent(ctx):
        return ServerResponse(["1", "2"])

Я новичок в Spyne, поэтому любая помощь очень приветствуется.

1 Ответ

0 голосов
/ 07 ноября 2019

Array создает так называемый обернутый массив. Если вам нужен распакованный файл, вы можете попробовать:

class ServerResponse(ComplexModel):
    BODY = String(max_occurs='unbounded')

    def __init__(self, BODY):
        self.BODY = BODY

Это будет повторять тег <BODY> вместо повторения тега <string> внутри тега <BODY>.

Однако это не канонический способ работы с массивами в мире SOAP. Некоторые клиенты автоматически обнаруживают упакованные массивы. Если нет, я рекомендую либо изменить клиентские библиотеки, либо научиться жить с этим.

...