Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中用于解析文本格式的协议缓冲区“ParseFromString”?_Java_Parsing_Protocol Buffers - Fatal编程技术网

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