Как превратить из 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)