протокол буфера v2 пропустить неизвестное поле - PullRequest
0 голосов
/ 06 ноября 2018

Кажется, что protov2 сохраняет неизвестные поля. Существует ли API / интерфейс для обратного, то есть пропустить поля, которые не требуются

например

  message C {
     required int32 id = 1;
     required string tag = 2;
   }

   message B { 
      required int32 id = 1;
      optional bytes data = 2;
    }
    message A { 
       repeated messageC tagInfo = 1;
       repeated messageB messages = 2;
     } 

Есть ли в proto2 способ просто читать messageC без чтения messageB из сериализованной версии messageA? На данный момент кажется, что если бы я должен был создать другую более легкую версию messageA, скажем, messageD только с tagInfo с тем же номером поля ..., тогда сообщения все равно были бы проанализированы и прочитаны и сохранены как «неизвестные» поля.

Но я хочу только читать сообщения, основываясь на некоторой условной информации, представленной в tagInfo. Это возможно ? Нужно ли мне писать свой собственный парсер с использованием CodedInputStream ... если да, то как этого достичь в Java?

...