Как установить поле google.protobuf.ValueJAVA

Программисты JAVA общаются здесь
Anonymous
Как установить поле google.protobuf.Value

Сообщение Anonymous »


Я не слишком хорошо знаком с Java, однако мне удалось продвинуться вперед в настройке среды разработки с помощью Gradle для сборки моего проекта и компиляции файлов .proto в заказать для моего проекта анализ и изменение некоторых данных. Меня беспокоит изменение данных.

Итак, поскольку x является двоичным объектом, содержащим сообщение protobuf, я могу сделать следующее:

var myMessage = FooMessage.parseFrom(x.getBytes()); вар myString = myMessage.getBar().toString(); В файле Foo.proto Bar определен как google.protobuf.Value.

Пока все хорошо, myString содержит строковое представление поля из сообщения protobuf.

Теперь я хочу это изменить. Скажем, например, я делаю сакэ

myString = "|" + myString + "|";

Я считаю, что могу получить изменяемую версию myMessage с помощью следующего кода:

var myBuilder = myMessage.toBuilder(); и есть метод setBar:

myBuilder.setBar(myString); Однако код дает

не найден подходящий метод для setPayload(string)

Думаю, потому что мне нужно передать ему google.protobuf.Value. Итак, мой вопрос: как мне преобразовать String в google.protobuf.Value?

Тогда я смогу использовать build() и преобразовать все сообщение в поток, а затем преобразовать toByteArray(), тогда все должно быть хорошо, я просто застрял в части Значение. Должно быть, я где-то что-то пропустил. Я читал, что могу сделать Value value = Value.newBuilder().setValue(myString).build(), но компилятор сказал, что не может найти символ .setValue.

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