如何为重复字段的字段指定字段掩码?

时间:2018-02-18 16:16:29

标签: protocol-buffers grpc grpc-java

假设你有一个proto定义如下:

-n

让我们说猫看起来像这样:

message Zoo {
    repeated Cat cats = 1;
}

如果我想减少Zoo中的数据量,使得样本数据只包含message Cat { google.protobuf.StringValue name = 1 Decimal age = 2; } ,只有名称字段,我该怎么做?

实施例: Zoo对象的示例如下所示:

Cat

我正在尝试使用一个字段掩码:

{
    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(); } 只显示名称?

2 个答案:

答案 0 :(得分:0)

我刚检查了Java implementation并且它在Java中不受支持,因为猫是重复的字段。它在c-core中也不受支持。

您最好的选择是使用反射来实现目标。

答案 1 :(得分:0)

来自FieldMask documentation

  

除了字段掩码的最后位置外,不允许重复字段。