Protobuf FieldMask не принимает синтаксис * для повторяющейся маскировки полей.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Protobuf FieldMask не принимает синтаксис * для повторяющейся маскировки полей.

Сообщение Anonymous »

У меня есть сообщение protobuf с повторяющимся полем:

Код: Выделить всё

message TestRepeatedMask {
repeated Inner inner_message = 1;

message Inner {
optional string first = 1;
optional string second = 2;
}
}
Я знаю, что в документации по маскам полей указано, что вы не можете выбрать одно поле из каждого члена списка элементов, но OTOH есть документация по подстановочным знакам, в которой говорится, что вы можете использовать ".*." в пути маски поля, чтобы сделать именно это.
Мой пример на Java:

Код: Выделить всё

  public static TestRepeatedMask readMinimal(TestRepeatedMask route) {
FieldMask.Builder maskBuilder = FieldMask.newBuilder();
FieldMask mask = maskBuilder.addPaths("inner_message.*.first").build();
TestRepeatedMask.Builder result = TestRepeatedMask.newBuilder();
FieldMaskUtil.merge(mask, route, result);
return result.build();
}

@Test
public void readRespo() {
TestRepeatedMask o =
SelectedRouteMasker.readMinimal(
TestRepeatedMask.newBuilder()
.addInnerMessage(Inner.newBuilder().setFirst("first").setSecond("second"))
.build());
System.out.println(o);
}
Я ожидаю получить этот объект без поля «второй»:

Код: Выделить всё

TestRepeatedMask { inner { first: "first" } }
Я запускаю тест и получаю:

Код: Выделить всё

Oct 15, 2025 9:06:59 AM com.google.protobuf.util.FieldMaskTree merge
WARNING: Field "TestRepeatedMask.inner_message" is not a singular message field and cannot have sub-fields.
То, что я пытаюсь сделать, не поддерживается? Я неправильно понимаю документы с подстановочными знаками?

Подробнее здесь: https://stackoverflow.com/questions/797 ... ld-masking
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»