无法将json解组到protobuf结构字段

无法将json解组到protobuf结构字段,json,go,protocol-buffers,Json,Go,Protocol Buffers,我有一个类似的原型文件 syntax = "proto3"; package proto; import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/protobuf/struct.proto"; message JobCreateRequest { string Name = 1 [(gogoproto.jsontag) = "name", (gogoproto.moretags)= "valida

我有一个类似的原型文件

syntax = "proto3";
package proto;
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
import "google/protobuf/struct.proto";


message JobCreateRequest {
    string Name = 1 [(gogoproto.jsontag) = "name", (gogoproto.moretags)= "validate:\"required,max=100\""];
    string Description = 2 [(gogoproto.jsontag) = "description", (gogoproto.moretags) = "validate:\"required,max=100\""];
    google.protobuf.Value Data = 3 [(gogoproto.jsontag) = "data", (gogoproto.moretags) = "validate:\"required\""];
}
我试图使用“encoding/json”库将下面的json解组到protobuf中:

将请求json解码为protobuf的代码为:

json.NewDecoder(r.Body).Decode(req)
但JobCreateRequest结构中的结果数据字段始终设置为nil。在protobuf中使用struct Value的正确方法是什么?

您可以使用它将JSON转换为protobuf

req := proto.JobCreateRequest{}
jsonpb.Unmarshal(r.Body, &req)
如果使用,则可以使用
google.golang.org/protobuf/encoding/protojson
进行转换

req := &proto.JobCreateRequest{}
err := protojson.Unmarshal(bytes, req)

由于Saurav使用的是gogo proto,您可能想要gogo版本的jsonpb,我认为这与gogo版本略有不同:
req := &proto.JobCreateRequest{}
err := protojson.Unmarshal(bytes, req)