package common import ( "encoding/json" "google.golang.org/protobuf/types/known/structpb" ) func MarshalJSON(v interface{}) []byte { j, _ := json.Marshal(v) return j } func NewStructValuePB(v interface{}) *structpb.Value { s := new(structpb.Value) s.UnmarshalJSON(MarshalJSON(v)) return s } func NewStructValuePBByBytes(v []byte) *structpb.Value { s := new(structpb.Value) s.UnmarshalJSON(v) return s } func NewStructPB(v interface{}) *structpb.Struct { s := new(structpb.Struct) s.UnmarshalJSON(MarshalJSON(v)) return s } func NewStructPBByBytes(v []byte) *structpb.Struct { s := new(structpb.Struct) s.UnmarshalJSON(v) return s } // UnMarshalPBValue obj为指针对象 func UnMarshalPBValue(v *structpb.Value, obj interface{}) error { j, err := v.MarshalJSON() err = json.Unmarshal(j, obj) return err } // UnMarshalPBStruct obj为指针对象 func UnMarshalPBStruct(v *structpb.Struct, obj interface{}) error { j, err := v.MarshalJSON() err = json.Unmarshal(j, obj) return err }