Documentation
¶
Overview ¶
Copyright 2013 The Nho luong Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
Package yaml provides a wrapper around go-yaml designed to enable a better way of handling YAML when marshaling to and from structs.
In short, this package first converts YAML to JSON using go-yaml and then uses json.Marshal and json.Unmarshal to convert to or from the struct. This means that it effectively reuses the JSON struct tags as well as the custom JSON methods MarshalJSON and UnmarshalJSON unlike go-yaml.
See also http://nholuongut.com/2014/the-right-way-to-handle-yaml-in-golang
Index ¶
- func DisallowUnknownFields(d *json.Decoder) *json.Decoder
- 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 ¶
DisallowUnknownFields configures the JSON decoder to error out if unknown fields come along, instead of dropping them by default.
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 ¶
UnmarshalStrict is like Unmarshal except that any mapping keys that are duplicates will result in an error. To also be strict about unknown fields, add the DisallowUnknownFields option.
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 ¶
YAMLToJSONStrict is like YAMLToJSON but enables strict YAML decoding, returning an error on any duplicate field names.