Невозможно демаршировать JSON для protobuf struct field - PullRequest
0 голосов
/ 23 октября 2018

У меня есть файл прото, похожий на этот.

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\""];
}

Я пытаюсь разархивировать ниже json в protobuf, используя библиотеку "encoding / json":

{
 "name": "India",
 "description": "test job",
 "data": { 
    "id": 1 
  }
}

Код длязапрос декодирования json в protobuf:

json.NewDecoder(r.Body).Decode(req)

Но результирующее поле данных внутри структуры JobCreateRequest всегда имеет значение nil .Как правильно использовать struct Value в protobuf?

1 Ответ

0 голосов
/ 23 октября 2018

Вы можете использовать github.com / golang / protobuf / jsonpb для преобразования JSON в protobuf.

req := proto.JobCreateRequest{}
jsonpb.Unmarshal(r.Body, &req)
...