How would you encode a Map<String, Object> using Protocol Buffers?

[亡魂溺海] 提交于 2019-12-04 16:52:12

问题


I'm trying to use Protocol Buffers for message serialization.

My message format should contain Map< String, Object > entries ... but how do I write the .proto definition?

As far as I know, Protocol Buffers does not have a build-in Map type. I could model around that using repeating fields. But the big problem I have is, that you need to define all your types. I want my message to be flexible, so I can't specify the types.

Any ideas?


回答1:


I'd model a tuple with a key and a value (probably one value field per type that the value could be). Then just have a repeated list of that tuple type. You'd need to build the map itself in code.

When you say you can't specify the types - what sort of types are you talking about? If you have an optional field of each type in the tuple, then that would cope for all the primitives - and you could map messages by serializing them into a byte string.

It sounds like the level of "unstructure" you have may not be a good fit for PB though.



来源:https://stackoverflow.com/questions/1102900/how-would-you-encode-a-mapstring-object-using-protocol-buffers

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!