2009-07-09 16 views
14

Estoy tratando de usar Protocol Buffers para la serialización de mensajes.¿Cómo codificaría un Map <String, Object> utilizando Protocol Buffers?

Mi formato de mensaje debe contener Map < String, Object> entries ... pero ¿cómo puedo escribir la definición .proto?

Por lo que yo sé, Protocol Buffers no tiene un tipo de mapa incorporado. Podría modelar eso usando campos repetidos. Pero el gran problema que tengo es que necesitas definir todos tus tipos. Quiero que mi mensaje sea flexible, por lo que no puedo especificar los tipos.

¿Alguna idea?

+0

Por lo que vale la pena: ahora parece 'proto3' tiene '' mapas <,> sintaxis: https://developers.google.com/protocol-buffers/docs/proto3#maps –

Respuesta

10

Me gustaría modelar una tupla con una clave y un valor (probablemente un campo de valor por tipo que el valor podría ser). Entonces solo tiene una lista repetida de ese tipo de tupla. Necesitarías construir el mapa mismo en código.

Cuando dice que no puede especificar los tipos, ¿de qué tipo de tipos está hablando? Si tiene un campo opcional de cada tipo en la tupla, eso cubriría todas las primitivas, y podría asignar mensajes serialándolos en una cadena de bytes.

Parece que el nivel de "desestructuración" que tiene puede no ser una buena opción para PB.

+1

suena razonable ... pero yo supongo que están en lo correcto: PB no parece una buena opción para mi problema – arturh

+2

@artuh - ¿qué usó finalmente para su problema? – ekeren

+0

Entonces ... ¿Alguna idea? –

Cuestiones relacionadas