...

Package yaml

import "sigs.k8s.io/yaml"
Overview
Index
Subdirectories

Overview ▾

func DisallowUnknownFields

func DisallowUnknownFields(d *json.Decoder) *json.Decoder

DisallowUnknownFields configures the JSON decoder to error out if unknown fields come along, instead of dropping them by default.

func JSONObjectToYAMLObject

func JSONObjectToYAMLObject(j map[string]interface{}) yaml.MapSlice

JSONObjectToYAMLObject converts an in-memory JSON object into a YAML in-memory MapSlice, without going through a byte representation. A nil or empty map[string]interface{} input is converted to an empty map, i.e. yaml.MapSlice(nil).

interface{} slices stay interface{} slices. map[string]interface{} becomes yaml.MapSlice.

int64 and float64 are down casted following the logic of github.com/go-yaml/yaml: - float64s are down-casted as far as possible without data-loss to int, int64, uint64. - int64s are down-casted to int if possible without data-loss.

Big int/int64/uint64 do not lose precision as in the json-yaml roundtripping case.

string, bool and any other types are unchanged.

func JSONToYAML

func JSONToYAML(j []byte) ([]byte, error)

JSONToYAML converts JSON to YAML. Notable implementation details:

func Marshal

func Marshal(obj interface{}) ([]byte, error)

Marshal marshals obj into JSON using stdlib json.Marshal, and then converts JSON to YAML using JSONToYAML (see that method for more reference)

func Unmarshal

func Unmarshal(yamlBytes []byte, obj interface{}, opts ...JSONOpt) error

Unmarshal first converts the given YAML to JSON, and then unmarshals the JSON into obj. Options for the standard library json.Decoder can be optionally specified, e.g. to decode untyped numbers into json.Number instead of float64, or to disallow unknown fields (but for that purpose, see also UnmarshalStrict). obj must be a non-nil pointer.

Important notes about the Unmarshal logic:

func UnmarshalStrict

func UnmarshalStrict(yamlBytes []byte, obj interface{}, opts ...JSONOpt) error

UnmarshalStrict is similar to Unmarshal (please read its documentation for reference), with the following exceptions:

func YAMLToJSON

func YAMLToJSON(y []byte) ([]byte, error)

YAMLToJSON converts YAML to JSON. Since JSON is a subset of YAML, passing JSON through this method should be a no-op.

Some things YAML can do that are not supported by JSON:

Notable about the implementation:

- Duplicate fields are case-sensitively ignored in an undefined order. Note that the YAML specification forbids duplicate fields, so this logic is more permissive than it needs to. See YAMLToJSONStrict for an alternative. - As per the YAML 1.1 specification, which yaml.v2 used underneath implements, literal 'yes' and 'no' strings without quotation marks will be converted to true/false implicitly. - Unlike Unmarshal, all integers, up to 64 bits, are preserved during this round-trip. - There are no compatibility guarantees for returned error values.

func YAMLToJSONStrict

func YAMLToJSONStrict(y []byte) ([]byte, error)

YAMLToJSONStrict is like YAMLToJSON but enables strict YAML decoding, returning an error on any duplicate field names.

type JSONOpt

JSONOpt is a decoding option for decoding from JSON format.

type JSONOpt func(*json.Decoder) *json.Decoder

Subdirectories

Name Synopsis
..
goyaml.v2 Package yaml implements YAML support for the Go language.
goyaml.v3 Package yaml implements YAML support for the Go language.