假设您有一个定义如下的原型(prototype):
message Zoo {
repeated Cat cats = 1;
}
假设猫看起来像这样:
message Cat {
google.protobuf.StringValue name = 1
Decimal age = 2;
}
如果我想减少 Zoo 中的数据量,使样本数据只包含 Cat
和名称字段,我该怎么做?
例子: 示例 Zoo 对象如下所示:
{
Cat: [{
name = "sam";
},
{
name = "hester";
}]
}
我正在尝试使用一个字段掩码来执行此操作:
FieldMask zoo_mask = FieldMask.newBuilder()
.addPaths("cats")
.build();
Zoo getMaskedZoo(FieldMask mask, Zoo zoo) {
Zoo.Builder zooDest = Zoo.newBuilder();
FieldMaskUtil.merge(zoo_mask, zoo, zooDest);
return zooDest.build();
}
如何才能让每只 Cat
只显示名称?
最佳答案
我刚刚检查了 Java implementation并且它在 Java 中不受支持,因为 cats 是一个重复的字段。 c-core 也不支持它。
您最好的选择是使用反射来实现您的目标。
关于protocol-buffers - 如何为重复字段的字段指定字段掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48853808/