* Remove HybridCodec * WIP on fixing proto JSON issues * WIP on fixing proto JSON issues * WIP on fixing proto JSON issues * WIP on fixing proto JSON issues * WIP on fixing proto JSON issues * Test fixes * Delete hybrid_codec.go * Fixes * Fixes * Fixes * Test fixes * Test fixes * Test fixes * Lint * Sim fixes * Sim fixes * Revert * Remove vesting account JSON tests * Update CHANGELOG.md * Lint * Sim fixes * Sim fixes * Docs * Migrate more amino usages * Remove custom VoteOption String() and json marshaling * Fix tests * Add comments, update CHANGELOG.md Co-authored-by: Jonathan Gimeno <jgimeno@gmail.com> Co-authored-by: Alexander Bezobchuk <alexanderbez@users.noreply.github.com>
31 lines
765 B
Go
31 lines
765 B
Go
package codec
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"github.com/cosmos/cosmos-sdk/codec/types"
|
|
|
|
"github.com/gogo/protobuf/jsonpb"
|
|
"github.com/gogo/protobuf/proto"
|
|
)
|
|
|
|
// ProtoMarshalJSON provides an auxiliary function to return Proto3 JSON encoded
|
|
// bytes of a message.
|
|
func ProtoMarshalJSON(msg proto.Message) ([]byte, error) {
|
|
// We use the OrigName because camel casing fields just doesn't make sense.
|
|
// EmitDefaults is also often the more expected behavior for CLI users
|
|
jm := &jsonpb.Marshaler{OrigName: true, EmitDefaults: true}
|
|
err := types.UnpackInterfaces(msg, types.ProtoJSONPacker{JSONPBMarshaler: jm})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
buf := new(bytes.Buffer)
|
|
|
|
if err := jm.Marshal(buf, msg); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return buf.Bytes(), nil
|
|
}
|