簡體   English   中英

無法將 json 解組到 protobuf 結構字段

[英]Unable to unmarshal json to protobuf struct field

我有一個與此類似的原型文件。

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 中:

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

將請求json解碼為protobuf的代碼是:

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

但是 JobCreateRequest 結構中的結果 Data 字段始終設置為nil 在 protobuf 中使用 struct Value 的正確方法是什么?

您可以使用github.com/golang/protobuf/jsonpb將 JSON 轉換為 protobuf。

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

如果您使用google.golang.org/protobuf ,那么您可以使用google.golang.org/protobuf/encoding/protojson進行轉換。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM