如何在 JAVA 上运行的协议缓冲区 3 中显示默认值或字段



我目前正在尝试显示或记录 protobuff 帧的空值或默认值。在我的情况下,协议缓冲区是通过 RS232 链接使用的,我需要显示未在有效负载中发送的默认值(我知道它们是隐式的(我首先想到使用方法 .hasField(field(,但由于 .proto 文件的长度,它没有适应。 我尝试在打印机上使用 Json 格式 返回的指针是带有 " 的字段。

FromSender Message = FromSender.parseFrom(receivedFrame.getPayload());
Printer p = JsonFormat.printer().includingDefaultValueFields();
String result = p.print(Message);

我终于成功地使用了这种方法。我只是使用构建器将打印机放入方法中

public String getDefaultValue() {
		StringBuilder builder = new StringBuilder();
		try {
			if(FrameMessage != null) {
				Printer p = JsonFormat.printer().includingDefaultValueFields();
				builder.append(p.print(FrameMessage));
			}
		} catch (InvalidProtocolBufferException e) {
			LOGGER.error("Error while parsing message", e);
				e.printStackTrace();
			}
			return builder.toString();
		}

最新更新