mirror of https://github.com/docker/cli.git
37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
|
package data
|
||
|
|
||
|
import "github.com/docker/go/canonical/json"
|
||
|
|
||
|
// Serializer is an interface that can marshal and unmarshal TUF data. This
|
||
|
// is expected to be a canonical JSON marshaller
|
||
|
type serializer interface {
|
||
|
MarshalCanonical(from interface{}) ([]byte, error)
|
||
|
Marshal(from interface{}) ([]byte, error)
|
||
|
Unmarshal(from []byte, to interface{}) error
|
||
|
}
|
||
|
|
||
|
// CanonicalJSON marshals to and from canonical JSON
|
||
|
type canonicalJSON struct{}
|
||
|
|
||
|
// MarshalCanonical returns the canonical JSON form of a thing
|
||
|
func (c canonicalJSON) MarshalCanonical(from interface{}) ([]byte, error) {
|
||
|
return json.MarshalCanonical(from)
|
||
|
}
|
||
|
|
||
|
// Marshal returns the regular non-canonical JSON form of a thing
|
||
|
func (c canonicalJSON) Marshal(from interface{}) ([]byte, error) {
|
||
|
return json.Marshal(from)
|
||
|
}
|
||
|
|
||
|
// Unmarshal unmarshals some JSON bytes
|
||
|
func (c canonicalJSON) Unmarshal(from []byte, to interface{}) error {
|
||
|
return json.Unmarshal(from, to)
|
||
|
}
|
||
|
|
||
|
// defaultSerializer is a canonical JSON serializer
|
||
|
var defaultSerializer serializer = canonicalJSON{}
|
||
|
|
||
|
func setDefaultSerializer(s serializer) {
|
||
|
defaultSerializer = s
|
||
|
}
|