【发布时间】:2019-09-29 03:30:30
【问题描述】:
我有一个 Java 应用程序,它从另一台计算机读取一些 protobuf 数据,然后可以修改一些值并将其写回。用户很可能可以使用过时的 .proto 文件读取数据,因此在这种情况下会有一些它不理解的字段。在写回所做的更改时,我最终希望保留未知数据;但是,我可以只检测到有未知数据(提示用户升级他/她的应用程序)。我不清楚如何处理 Java 中的未知字段。
如果有帮助,我正在使用版本 2 .proto 文件,因为我需要它与远程计算机上的 nanopb 兼容。
这个question 让我参与其中,但我的问题与 JSON 无关。
【问题讨论】:
-
您是否测试过用户使用过时的 .proto 文件打开数据时的行为?在这种情况下,您是否可以捕获并响应一个简单的异常?
-
如果您使用 protoc 生成 java 类,它包含 unknownFields 字段,它将填充标签编号和值(因为新的 proto 包含例如标签 4,在过时的 proto 文件中不可用)
标签: java protocol-buffers protobuf-java