2016-06-21 54 views
0

我订阅了Azure服务总线主题,并试图检索从我的Python客户端发送的对象。但在我的接收端我得到的是这样的:检索从Python客户端发送到Azure服务总线的对象主题

<__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_ID和名称),这是由发送方发送?

回答

0

一个简单的解决方案是在该实例的.__dict__成员上调用bytes()。这是一个标准的Python dict,如果你的类很简单,它将是JSON,如序列化到"{'user_id': '123456', 'name': 'Shaphil'}"

请尝试下面的代码片段创建Message对象:

msg = Message(bytes(user.__dict__))

任何进一步的问题,请随时让我知道。

+0

嘿,其实这就是我所做的,因为我找不到任何其他解决方案。但我显然想知道是否有其他方式来做到这一点。谢谢你的回复,它给了我一些信心。 – Shaphil

相关问题