protobuf2将消息生成器与json合并不会出现在生成器扩展中

yqyhoc1h  于 2021-07-11  发布在  Java
关注(0)|答案(0)|浏览(220)

我定义了这样的信息

message Element {
optional ElementTail element_tail=1;
}

message ElementTail {
extension 1000 to max;
}

现在我定义了扩展

message ElementTailFirst {
extend ElementTail {
optional ElementTailFirst element = 1001;
}
optional string first_tail_field = 1;
}

现在我有一个json元素的字符串

String jsonString = "{"first_tail_field" : "something"}"

现在我创造了一个 builder 修改elementtailfirst.element。这是一个动态代码,所以我使用了 1001 ,以从extensionregistry中查找它。然后我将json与builder合并。

JsonFormat.parser().merge(jsonString,builder)

现在, System.out.println(builder.getDescriptorForType().getExtensions().size()) ,打印1,这是预期的。
现在考虑第二种情况,这里我将扩展定义为:

message ElementFirst{
extend ElementTail {
optional ElementTailOptions element = 1001;
}
message ElementTailOptions {
optional string first_tail_field = 1;
}
}

使用相同的过程,将builder与json合并后

System.out.println(builder.getDescriptorForType()
.getExtensions().size()),

是0。所以,现在它没有出现在扩展中。我不知道为什么会这样?这两种方法有什么区别?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题