2016-06-21 65 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

相關問題