我的项目中有以下消息类型:
message KeyValue {
oneof content {
StringKeyValue string_key_value = 1;
// ...
}
}
message StringKeyValue {
string key = 1;
string value = 2;
}
这种通用类型可以传输任何类型的对象。
message Anything {
bytes value = 1;
// ...
}
以下集合中,我想将一些序列化的KeyValue消息转移为Anything。
message List {
oneof content {
AnythingList anything_list = 1;
// ...
}
}
message AnythingList {
repeated com.mycompany.Anything value = 1;
}
这意味着我必须将我的KeyValue转换为将StringKeyValue转换为ByteString,然后将其添加到序列化List中,如下所示。这在我的一个项目中工作正常,但在其他项目中只包含一个空的ByteString,尽管StringKeyValue和KeyValue都不是空的。
AnythingList.Builder keyValueListBuilder = AnythingList.newBuilder();
keyValueListBuilder.addValue(Anything.newBuilder()
.setValue(KeyValue.newBuilder()
.setStringKeyValue(StringKeyValue.newBuilder()
.setKey("someKey")
.setValue("someValue").build())
.build().toByteString())
.build());
项目'依赖性不能成为这个问题的原因,因为在两个项目中使用完全相同的代码之后,上面的代码仍然拒绝在那个代码中起作用,它在开始时并没有起作用。 可悲的是,我无法找到任何解释为什么我会得到不同的结果。我的源代码或配置中是否缺少任何内容?
提前谢谢。
答案 0 :(得分:0)
我在项目中改变了一些东西,根本没有与这个问题相关,并且运行了几次。现在它似乎工作。 可悲的是,我不知道原因是什么以及我是如何解决它的,因为我写的是我改变了一些与这个问题无关的东西。