Documentation ¶
Index ¶
- func DisallowUnknownFields(d *json.Decoder) *json.Decoder
- func JSONObjectToYAMLObject(j map[string]interface{}) yaml.MapSlice
- func JSONToYAML(j []byte) ([]byte, error)
- func Marshal(o interface{}) ([]byte, error)
- func Unmarshal(y []byte, o interface{}, opts ...JSONOpt) error
- func UnmarshalStrict(y []byte, o interface{}, opts ...JSONOpt) error
- func YAMLToJSON(y []byte) ([]byte, error)
- func YAMLToJSONStrict(y []byte) ([]byte, error)
- type JSONOpt
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DisallowUnknownFields ¶ added in v1.1.0
DisallowUnknownFields configures the JSON decoder to error out if unknown fields come along, instead of dropping them by default.
func JSONObjectToYAMLObject ¶ added in v1.2.1
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 Marshal ¶
Marshal marshals the object into JSON then converts JSON to YAML and returns the YAML.
func Unmarshal ¶
Unmarshal converts YAML to JSON then uses JSON to unmarshal into an object, optionally configuring the behavior of the JSON unmarshal.
func UnmarshalStrict ¶ added in v1.1.0
UnmarshalStrict strictly converts YAML to JSON then uses JSON to unmarshal into an object, optionally configuring the behavior of the JSON unmarshal.
func YAMLToJSON ¶
YAMLToJSON converts YAML to JSON. Since JSON is a subset of YAML, passing JSON through this method should be a no-op.
Things YAML can do that are not supported by JSON:
- In YAML you can have binary and null keys in your maps. These are invalid in JSON. (int and float keys are converted to strings.)
- Binary data in YAML with the !!binary tag is not supported. If you want to use binary data with this library, encode the data as base64 as usual but do not use the !!binary tag in your YAML. This will ensure the original base64 encoded data makes it all the way through to the JSON.
For strict decoding of YAML, use YAMLToJSONStrict.
func YAMLToJSONStrict ¶ added in v1.1.0
YAMLToJSONStrict is like YAMLToJSON but enables strict YAML decoding, returning an error on any duplicate field names.