怎么把Json转换成Protobuf?

问题描述:

我是新来使用protobuf,并想知道是否有一种简单的方法来将json流/字符串转换为Java中的protobuf流/字符串?怎么把Json转换成Protobuf?

例如,

protoString = convertToProto(jsonString) 

我有,我想分析成的protobuf消息的JSON字符串。所以,我想先将json字符串转换为protobuf,然后在其上调用Message.parseFrom()

在此先感谢您的帮助!

+0

你可能想看看[FlatBuffers](https://google.github.io/flatbuffers/)来代替。 –

+1

“是一种将json流/字符串转换为protobuf流/字符串的简单方法?”可能不是。他们的工作不同protobuf字段实际上并未在序列化表示中命名,但它们是按顺序排列的。 JSON几乎相反;字段被命名,但序列通常无关紧要。你*可以做的就是把你生成的protobuf类并使用Jackson mixins注释它们并解析它们。 –

使用proto3,你可以使用JsonFormat来做到这一点。它直接从JSON表示中解析出来,因此不需要单独调用MyMessage.parseFrom(...)。像这样的东西应该工作:

JsonFormat.parser().merge(json_string, builder); 
+1

当一个值无效(说proto是布尔值,但json值是整数),有没有办法配置解析器忽略该字段或将该字段设置为null,而不是抛出'com.google.protobuf.InvalidProtocolBufferException' ? – the1plummie