Java中用于解析文本格式的协议缓冲区“ParseFromString”?
对于协议缓冲区,Java中用于解析文本格式的协议缓冲区“ParseFromString”?,java,parsing,protocol-buffers,Java,Parsing,Protocol Buffers,对于协议缓冲区,ParseFromString在Java中是否可用 > C++版本有:(注意:代码>文本格式::PARSEFROSCONSTORE < /CUL>简单地调用文本格式::语法分析器:PARSEFROWSROPE >新解析器< /Cord>对象>: 您可以看到,Parse只需清除消息,然后调用Merge。尽管协议缓冲区的Java实现没有Parse方法,但您可以轻松实现它: public static void parseFromString(CharSequence input,
ParseFromString
在Java中是否可用
<> > C++版本有:(注意:代码>文本格式::PARSEFROSCONSTORE < /CUL>简单地调用<代码>文本格式::语法分析器:PARSEFROWSROPE >新<代码>解析器< /Cord>对象>:
您可以看到,Parse
只需清除消息,然后调用Merge
。尽管协议缓冲区的Java实现没有Parse
方法,但您可以轻松实现它:
public static void parseFromString(CharSequence input, ExtensionRegistry extensionRegistry, Message.Builder builder) throws ParseException {
builder.clear();
TextFormat.merge(input, extensionRegistry, builder);
}
对于消息
a
,方法TextFormat.getParser().merge(str,builder)代码>完成它。例如:
AOuterClass.A.Builder buildA = AOuterClass.A.newBuilder();
buildA.setName("Abra Kadabra");
buildA.addPrices(3.14);
buildA.addPrices(3.141592);
AOuterClass.A aaa = buildA.build();
String str = aaa.toString();
AOuterClass.A.Builder builder = AOuterClass.A.newBuilder();
///////////////////////////////////////////
TextFormat.getParser().merge(str, builder);
System.out.println(builder.build().equals(aaa)); //true
使用proto3
进行测试我不熟悉协议缓冲区,但是合并到空白消息中是否也有相同的功能?好的,我看到了一些用于可读的,谢谢!
AOuterClass.A.Builder buildA = AOuterClass.A.newBuilder();
buildA.setName("Abra Kadabra");
buildA.addPrices(3.14);
buildA.addPrices(3.141592);
AOuterClass.A aaa = buildA.build();
String str = aaa.toString();
AOuterClass.A.Builder builder = AOuterClass.A.newBuilder();
///////////////////////////////////////////
TextFormat.getParser().merge(str, builder);
System.out.println(builder.build().equals(aaa)); //true