当前位置: 首页 > 面试题库 >

JSON和协议缓冲区之间是否存在标准映射?

白子默
2023-03-14
问题内容

从公告博客文章的评论中:

关于JSON:JSON的结构类似于协议缓冲区,但是协议缓冲区二进制格式仍然更小且编码更快。但是,JSON为协议缓冲区提供了一种出色的文本编码-
编写编码器/解码器是很简单的,该编码器/解码器使用protobuf反射将任意协议消息与JSON相互转换。这是与AJAX应用程序通信的好方法,因为让用户在访问您的页面时下载完整的protobuf解码器可能太多了。

编写 一个
映射可能是微不足道的,但是在两者之间是否有一个单独的“显而易见的”映射,任何两个独立的开发团队都会自然地解决?如果两个产品支持PB数据并且因为它们共享相同的.proto规范而可以互操作,我想知道如果它们独立地引入相同规范的JSON反射,它们是否仍然可以互操作。可能会做出一些任意决定,例如枚举值应该用字符串(对于人类来说是典型的JSON可读)还是整数值来表示?

那么,是否存在已建立的映射以及用于根据.proto规范生成JSON编码器/解码器的任何开源实现?


问题答案:

是的,自协议缓冲区版本3.0.0(2016年7月28日发布)以来,存在发行说明中提到的 “ JSON中定义明确的编码,可以替代二进制原型编码”

https://html" target="_blank">github.com/google/protobuf/releases/tag/v3.0.0



 类似资料:
  • 问题内容: 我正在使用gSoap将旧式C 系统重构为SOA。我们遇到了一些性能问题(非常大的XML),因此我的领导要我看一下协议缓冲区。我做到了,它看起来非常酷(我们需要C 和Java支持)。但是协议缓冲区是仅用于序列化的解决方案,现在我需要将其发送到Java前端。从C ++和Java角度来看,我应该使用什么来通过HTTP(只是内部网络)发送那些序列化的内容? PS。另一个人试图加速我们的gSoa

  • 其中需要将路径设置为协议,以获取导入标准协议缓冲区(protobuf),如清空。proto和时间戳。在Windows和Dart中的proto? 运行协议时: protoc——dart\u out=grpc:lib/src/protos/generated-Iprotos-protos/organization。proto—plugin=protoc gen dart=D:\Users\Samuel

  • 请注意:虽然这个问题特别提到了Dropwizard,但我相信任何有泽西/JAX-RS经验的人都应该能够回答这个问题,因为我可以想象Dropwizard只是在幕后遵循泽西/JAX-RS约定。 我有一个Dropwizard服务,它用JSON编写,工作非常出色。 现在我想将其切换为读/写二进制数据(以最小化网络带宽)。我看到了Dropwizard Protobuf库,但我对在Dropwizard中实现二

  • 我在客户机-服务器体系结构中使用协议缓冲区作为有线数据格式。域对象(JavaBeans)将经历以下生命周期。 用于客户端业务逻辑 转换为协议格式 传送到服务器 转换回域对象 用于服务器端业务逻辑 “协议缓冲器和O-O设计”部分在协议留档中建议在适当的域模型内包装生成的类。 我想找出最好的办法。 例如,我有一个简单的原型定义。 这就是域模型的定义方式。如您所见,数据完全存储在proto builde

  • 两者都是序列化库,由谷歌开发人员开发。他们之间有什么大的区别吗?将使用协议缓冲区的代码转换为使用FlatBuffers需要大量工作吗?

  • 我正在尝试更新Android BluetoothChat示例的代码,以使用Protobuf进行更结构化的数据交换。我还需要byte[]数组字段来发送任意数据,如图像字节数组,但在尝试编译时。proto文件,我得到以下错误。 协议文件/蓝牙消息。proto:8:18:应为字段名。 下面是我的. proto文件。 stackoverflow上的其他几个帖子提到byte[]可以用作文件,下面的页面也说了