On Sun, Feb 18, 2018 at 9:05 PM Shelley Tong <[email protected]>
wrote:

> Let's say you have a proto defined as the following:
>
> message Zoo {
>     repeated Cat cats = 1;
> }
>
> Let's say cat looks like this:
>
> message Cat {
>     google.protobuf.StringValue name = 1
>     Decimal age = 2;
> }
>
> If I want to reduce the amount of data in Zoo such that sample data only
> contains Cat with only the name field, how do I do that?
>
> Example: A sample Zoo object will look like this:
>
> {
>     Cat: [{
>         name = "sam";
>     },
>     {
>         name = "hester";
>     }]
> }
>
> I'm trying to do this with one field mask:
>
> 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();
> }
>
> How do I make it so that only the name displays for each Cat?
>
This is not supported at the moment, i.e., you can't use 'cats.name' in the
FieldMask because 'cats' is a repeated field. FieldMaskUtil is more of a
helper utility for a specific use case of protobuf. In your case, I think
you can simply use protobuf reflection API to do the same.

> --
> You received this message because you are subscribed to the Google Groups
> "Protocol Buffers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/protobuf.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to