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

标签 protocol-buffers grpc grpc-java

假设您有一个定义如下的原型(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/

相关文章:

c++ - 通过Socket发送protocol buffer数据并判断类

c++ - 用于 protobuf 转换的 Braced-init 样式构造函数

c++ - CMake在编译Google的protobuf示例时找不到protobuf

java - Scala (java) grpc 异步拦截器状态传播

java - Java 中 Protocol Buffer 分隔的 I/O 函数是否有 C++ 等效项?

python - Grpc 服务器扩展(双向无限流)

protocol-buffers - --grpc_out : protoc-gen-grpc: Plugin failed with status code 1 on osx. (Java)

grpc-java:正确处理客户端上的服务流调用重试

ssl - 如何使用 TLS 连接到 GRPC?