如何从Json转换为Protobuf?

2022-09-01 02:04:50

我是使用protobuf的新手,并且想知道是否有一种简单的方法可以将json流/字符串转换为Java中的protobuf流/字符串?

例如

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)