Получить объект, отправленный из клиента Python в раздел служебной шины Azure

Я подписан на раздел служебной шины Azure и пытаюсь получить объекты, отправленные с моего клиента Python. Но в моем получающем конце все, что я получаю, является чем-то вроде этого:

<__main__.User object at 0x02F694F0>
<models.AssetPayload object at 0x038EA930>

Я попытался получить в Python и в.NET. Вот фиктивный код того, что я пробовал:

class User(object):
    def __init__(self, user_id, name):
        self.user_id = user_id
        self.name = name


user = User('123456', 'Shaphil')

# Send Message to 'myTopic'
msg = Message(bytes(user))
bus_service.send_topic_message('myTopic', msg)

# Receive Messages
msg = bus_service.receive_subscription_message('myTopic', 'AllMessages', peek_lock=False)
print msg.body

Получение фиктивного кода в C#:

var message = subscriptionClient.Receive();
var json = new StreamReader(message.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();

Console.WriteLine(json);

Как я могу получить объект User (user_id и name), который был отправлен отправителем?

1 ответ

Решение

Простое решение было бы позвонить bytes() на .__dict__ член этого экземпляра. Это стандартный Python dictи если ваш класс прост, это будет JSON как сериализуемый "{'user_id': '123456', 'name': 'Shaphil'}",

Пожалуйста, попробуйте следующий фрагмент кода, чтобы создать Message объект:

msg = Message(bytes(user.__dict__))

Любое дальнейшее беспокойство, пожалуйста, не стесняйтесь, дайте мне знать.

Это должно работать.

message = Message(json.dumps(<dictionary to be converted into bytes>).encode('utf-8'))
Другие вопросы по тегам