package protobuf import ( "github.com/golang/protobuf/jsonpb" "github.com/golang/protobuf/proto" ) func ToJson(pb proto.Message) (string, error) { // 编码 protobuf 对象到 json m := &jsonpb.Marshaler{} m.OrigName = true // 使用 protobuf 定义的字段名称,而不是驼峰名称,便于识别 jsData, err := m.MarshalToString(pb) if err != nil { return "", err } return jsData, nil } func ToPrtobuf(s string, p proto.Message) error { err := jsonpb.UnmarshalString(s, p) if err != nil { return err } return nil }