Implement and use MarshalIndentFromJSON

This commit is contained in:
Aleksandr Bezobchuk 2020-03-25 13:03:14 -04:00
parent 7e67d84c0e
commit 3ecc461385
No known key found for this signature in database
GPG Key ID: 7DAC30FBD99879B0
2 changed files with 14 additions and 7 deletions

View File

@ -1,7 +1,6 @@
package context
import (
"encoding/json"
"fmt"
"io"
"os"
@ -261,12 +260,7 @@ func (ctx CLIContext) Print(toPrint interface{}) error {
// error. The re-encoded JSON uses the standard library as the initial encoded
// JSON should have the correct output produced by ctx.Marshaler.
if ctx.Indent && err == nil {
var generic interface{}
err = json.Unmarshal(out, &generic)
if err == nil {
out, err = json.MarshalIndent(generic, "", " ")
}
out, err = sdk.MarshalIndentFromJSON(out)
}
}

View File

@ -14,6 +14,19 @@ var (
DBBackend = ""
)
// MarshalIndentFromJSON returns indented JSON-encoded bytes from already encoded
// JSON bytes. The output encoding will adhere to the original input's encoding
// (e.g. Proto3).
func MarshalIndentFromJSON(bz []byte) ([]byte, error) {
var generic interface{}
if err := json.Unmarshal(bz, &generic); err == nil {
return nil, err
}
return json.MarshalIndent(generic, "", " ")
}
// SortedJSON takes any JSON and returns it sorted by keys. Also, all white-spaces
// are removed.
// This method can be used to canonicalize JSON to be returned by GetSignBytes,