2009-07-09 1 views
14

メッセージのシリアル化にProtocol Buffersを使用しようとしています。プロトコルバッファを使用してMap <String、Object>をどのようにエンコードしますか?

私のメッセージフォーマットはMap < String、Object> entries ...を含んでいるはずですが、.proto定義はどのように記述しますか?

私が知る限り、プロトコルバッファにはビルドインマップタイプはありません。繰り返しフィールドを使ってその周りをモデル化することができました。しかし、私が持っている大きな問題は、すべてのタイプを定義する必要があるということです。メッセージを柔軟にしたいので、タイプを指定することはできません。

アイデア?

+0

「proto3」には「maps <,>」という構文があります:https://developers.google.com/protocol-buffers/docs/proto3#maps –

答えて

10

私はタプルをキーと値でモデル化したいと考えています(おそらく、その値ができるタイプの値フィールドは1つです)。次に、そのタプル型の繰り返しリストを作成します。コード自体で地図を構築する必要があります。

あなたがタイプを指定できないと言うとき、あなたはどんな種類のタイプについて話していますか?タプル内の各タイプのオプションのフィールドがある場合、それはすべてのプリミティブに対処します。メッセージをバイト文字列にシリアライズしてマップすることができます。

あなたが持っている「構造化されていない」レベルのように聞こえるかもしれませんが、PBにはうまく適合しません。

+1

合理的に聞こえますが...正しいですか:PBは私の問題によく似ていません – arturh

+2

@artuh - あなたは最終的にあなたの問題に何を使いましたか? – ekeren

+0

だから...任意のアイデア? –

関連する問題