bsonpb
This package allows to serialize/deserialize golang protobuf
messages into/from bson
documents.
Important notes:
import "github.com/romnn/bsonpb/v2" // only works with google.golang.org/protobuf, NOT github.com/golang/protobuf
Usage (v2)
Marshaling
import "github.com/romnn/bsonpb/v2"
myProto := &pb.Message{Name: "Test", Hilarity: pb.Message_SLAPSTICK}
opts := bsonpb.MarshalOptions{}
marshaled, err := opts.Marshal(someProto)
if err != nil {
log.Fatal(err)
}
log.Infof("Marshaled: %v", marshaled)
Unmarshaling
import "github.com/romnn/bsonpb/v2"
var myProto pb.Message
inputBson := bson.D{{Key: "Name", Value: "Test"}}
if err := bsonpb.Unmarshal(inputBson, &myProto); err != nil {
log.Fatal(err)
}
log.Infof("Unmarshaled: %v", myProto)
If you want to try it, you can run the provided example with
bazel run //examples/v2:example
Tests
bazel test //:go_default_test
bazel test //v2:go_default_test # v2 only
Acknowledgements