微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。