相关疑难解决方法(0)

如何以人类可读的方式记录嵌套对象中的 Protobuf 字符串?

给定一个原型文件:

\n
syntax = "proto3";\npackage hello;\n\nmessage TopGreeting {\n    NestedGreeting greeting = 1;\n}\n\nmessage NestedGreeting {\n    Greeting greeting = 1;\n}\n\nmessage Greeting {\n    string message = 1;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

和代码:

\n
public class Main {\n    public static void main(String[] args) {\n        System.out.printf("From top: %s%n", newGreeting("\xec\x98\xa4\xeb\x8a\x98\xec\x9d\x80 \xeb\xac\xb4\xec\x8a\xa8 \xec\x9a\x94\xec\x9d\xbc\xec\x9e\x85\xeb\x8b\x88\xea\xb9\x8c?"));\n        System.out.printf("Directly: %s%n", "\xec\x98\xa4\xeb\x8a\x98\xec\x9d\x80 \xeb\xac\xb4\xec\x8a\xa8 \xec\x9a\x94\xec\x9d\xbc\xec\x9e\x85\xeb\x8b\x88\xea\xb9\x8c?");\n        System.out.printf("ByteString: %s", newGreeting("\xec\x98\xa4\xeb\x8a\x98\xec\x9d\x80 \xeb\xac\xb4\xec\x8a\xa8 \xec\x9a\x94\xec\x9d\xbc\xec\x9e\x85\xeb\x8b\x88\xea\xb9\x8c?").toByteString().toStringUtf8());\n    }\n\n    private static Hello.TopGreeting newGreeting(String message) {\n        Hello.Greeting greeting = Hello.Greeting.newBuilder()\n                .setMessage(message)\n                .build();\n        Hello.NestedGreeting nestedGreeting = Hello.NestedGreeting.newBuilder()\n                .setGreeting(greeting)\n                .build();\n        return Hello.TopGreeting.newBuilder()\n                .setGreeting(nestedGreeting)\n                .build();\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

输出

\n …

serialization protocol-buffers protobuf-java

3
推荐指数
1
解决办法
1741
查看次数