Как установить поле google.protobuf.Value ⇐ JAVA
-
Anonymous
Как установить поле google.protobuf.Value
Я не слишком хорошо знаком с 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, однако мне удалось продвинуться вперед в настройке среды разработки с помощью 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.
Мобильная версия