2016-06-21 9 views
0

Azureサービスバストピックを購読していて、Pythonクライアントから送信されたオブジェクトを取得しようとしています。しかし、私の受信側では、次のようなものが得られます。PythonクライアントからAzureサービスバストピックに送信されたRetrieveオブジェクト

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

私はPythonと.NETで受信しようとしました。ここで私が試したもののダミーコードは次のとおりです。

C#でダミーコードを受信
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 

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

関連する問題