Как превратить из Json в Protobuf?

Я новичок в использовании protobuf и задавался вопросом, есть ли простой способ конвертировать поток/строку json в поток protobuf/string в Java?

Например,

protoString = convertToProto(jsonString)

У меня есть строка json, которую я хочу проанализировать в сообщении protobuf. Итак, я хочу сначала преобразовать строку json в protobuf, а затем вызвать Message.parseFrom() на нем.

Заранее благодарим за помощь!

Ответы

Ответ 1

С proto3 вы можете сделать это, используя JsonFormat. Он анализирует непосредственно из представления JSON, поэтому нет необходимости отдельно вызывать MyMessage.parseFrom(...). Что-то вроде этого должно работать:

JsonFormat.parser().merge(json_string, builder);

Ответ 2

//You can use this for converting your input json to a Struct / any other Protobuf Class    

import com.google.protobuf.Struct.Builder;
import com.google.protobuf.Struct;
import com.google.protobuf.util.JsonFormat;
import org.json.JSONObject;

JSONObject parameters = new JSONObject();

Builder structBuilder = Struct.newBuilder();
JsonFormat.parser().merge(parameters.toString(), structBuilder);

// Now use the structBuilder to pass below (I used it for Dialog Flow V2 Context Management)