You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
543 B
25 lines
543 B
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
|
|
}
|