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

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
}