例如,我有proto-fileFile.proto:enumTest{ONE=1;TWO=2;}我使用File.proto的protoc生成文件File_pb2.py。我想在python代码中从生成的文件File_pb2.py中按值1(对应于File_pb2.ONE的值)获取字符串“ONE”(对应于File_pb2.ONE的名称)没有定义我自己的字典。我该怎么做? 最佳答案 假设生成的python位于File_pb2.py代码中试试这个:file_pb2._TEST.values_by_number[1].name在你的情况下,这应
我有一个现有系统,它在GUI和服务器之间使用基于protobuf通信协议(protocol)。现在我想添加一些持久性,但目前protobuf消息直接转换为第三方自定义对象。有没有办法将proto消息转换为json,然后可以持久化到数据库中。注意:我不太喜欢将二进制protobuf写入数据库的想法,因为它有朝一日可能无法向后兼容新版本,从而破坏系统。 最佳答案 如ananswertoasimilarquestion中所述,自v3.1.0这是ProtocolBuffers支持的功能。对于Java,包括扩展模块com.google.pro
使用Jackson的ObjectMapper将protobuf转换为JSON时出现以下错误:com.fasterxml.jackson.databind.exc.InvalidDefinitionException:Directself-referenceleadingtocycle(throughreferencechain:MyObjectPb$MyObject["unknownFields"]->com.google.protobuf.UnknownFieldSet["defaultInstanceForType"])MyObjectPb具有以下字段:protectedcom.g
我正在尝试运行protobuf存储库here中给出的示例,c++版本。我已成功安装该库并能够运行Makefile。但是在运行CMakeLists.txt时,我得到了这个错误:CMakeErroratCMakeLists.txt:9(find_package):Couldnotfindapackageconfigurationfileprovidedby"protobuf"withanyofthefollowingnames:protobufConfig.cmakeprotobuf-config.cmakeAddtheinstallationprefixof"protobuf"toCMA
假设我想序列化,然后使用protobuf-net反序列化一个小数:constdecimaloriginalDecimal=1.6641007661819458m;using(varmemoryStream=newMemoryStream()){Serializer.Serialize(memoryStream,originalDecimal);memoryStream.Position=0;vardeserializedDecimal=Serializer.Deserialize(memoryStream);Assert.AreEqual(originalDecimal,deseria
我是protobuf的新手,我已经开始考虑以下简单的例子messageEntry{requiredint32id=1;}由c++代码使用#include#include"example.pb.h"intmain(){std::stringmySerialized;{EntrymyEntry;std::cout即使需要“id”字段,由于没有设置,序列化缓冲区的大小为0(??)。当我反序列化消息时发生错误:[libprotobufERRORgoogle/protobuf/message_lite.cc:123]Can'tparsemessageoftype"Entry"becauseiti
我想复制一个通用的constprotobufMessage进一步操纵。我想到了Message*myfn(constMessage*msg){Message*copy=msg->New();copy->CopyFrom(*msg);//dostuffreturncopy;}这是正确的/惯用的吗?或者是否有更好的方法(可能是C++11特定的)? 最佳答案 这是正确的。如果你想要类型安全,一点模板魔法可以帮助:template::value>>std::unique_ptrclone(constMsg*msg){std::unique_p
我的原型(prototype)文件中有两个枚举,它们定义了几乎相同的值。是否可以删除其中一个并留下一个别名以保持所有代码正常工作?例子:enumA{a=0;b=1;}enumB{a=0;b=1;}我想在C++中使用类似typedef的东西:enumA{a=0;b=1;}typedefAB;我没有在文档中找到这个。有任何解决方法吗? 最佳答案 这是一个老问题,但如果有人仍然感兴趣,现在可以使用protobuf在枚举上创建别名enumEnumAllowingAlias{optionallow_alias=true;UNKNOWN=0;S
假设我有一个指针数组,每个指针都指向结构,这些结构可能再次包含指向其中其他结构的指针;是否可以使用protobuf处理序列化?如果是,怎么办?如有任何帮助,我们将不胜感激。 最佳答案 您考虑这个问题的方式与您在考虑protobufs时需要考虑的方式相反。Protobufs不采用现有数据结构并对其进行序列化。他们采用序列化协议(protocol)并为您创建数据结构,您可以填充。话虽如此,嵌套序列化非常简单://nested.protomessageInner{requiredstringvalue=1;}messageOuter{re
任何人有任何使用gRPC和SpringBoot的示例或想法吗? 最佳答案 如果它仍然对你有用,我已经创建了gRPCspring-boot-starterhere.grpc-spring-boot-starter使用@GRpcService-enabledbean自动配置和运行嵌入式gRPC服务器。最简单的例子:@GRpcService(grpcServiceOuterClass=GreeterGrpc.class)publicstaticclassGreeterServiceimplementsGreeterGrpc.Greeter