JSONFormat.print() 方法编码特殊字符并添加额外的斜杠

问题描述

我需要在 java 中将 protobuf 消息转换为 JSON 字符串。为此,我按照文档 (https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/util/JsonFormat.Printer.html)

的推荐使用了以下 API
String jsonString = JsonFormat.printer().includingDefaultValueFields().print(protobufMessage);

这对于一个简单的字符串来说工作正常,但是,当我的字符串包含像 &、单引号等特殊字符时。 JsonFormat 中的 gson.toJson() 方法正在将特殊字符转换为八进制格式。例如“A&BC”被转换为“A\u0026BC”。此外,结果字符串附加了一个额外的反斜杠。 所以最后 "A&BC" 被转换为字符串 "A\\u0026BC"。

如果它是“A\u0026BC”,那么我可以转换为一个字节数组并用它形成一个字符串。但由于额外的反斜杠,我无法这样做。

目前我使用的是 protobuf 3.7.1 版,我尝试升级并检查是否有任何最新的 API 可用,但没有帮助。我在网上搜索但没有找到任何参考资料(JSONFormat.printToString 报告了类似的问题,但此 API 在更高版本中被删除https://github.com/carlomedas/protobuf-java-format/issues/16)。如果您遇到此问题,有人可以在这里提供帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)