This package allows to serialize/deserialize golang protobuf
messages into/from bson
documents.
Important notes:
- This implementation has transitioned from the old github.com/golang/protobuf to the new google.golang.org/protobuf API. The v1 implementation had various bazel related conflicts with the protobug dependency and is now abandoned under the
v1
branch.
import "github.com/romnn/bsonpb/v2" // only works with google.golang.org/protobuf, NOT github.com/golang/protobuf
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)
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
bazel test //:go_default_test
bazel test //v2:go_default_test # v2 only
- The v1 implementation was inspired by the official github.com/golang/protobuf/jsonpb implementation.
- The v2 implementation was inspired by the official google.golang.org/protobuf/encoding/protojson implementation.