Documentation ¶
Index ¶
- Constants
- Variables
- func Flatten(nested map[string]interface{}, prefix string, style SeparatorStyle) (map[string]interface{}, error)
- func FlattenString(nestedstr, prefix string, style SeparatorStyle) (string, error)
- func Unflatten(data map[string]interface{}) (output []byte, err error)
- func UnflattenOrdered(data map[string]interface{}, keys []string) (output []byte, err error)
- type SeparatorStyle
Constants ¶
const KeyPrefix = "::k::"
Variables ¶
var ( // Separate nested key components with dots, e.g. "a.b.1.c.d" DotStyle = SeparatorStyle{Middle: "."} // Separate with path-like slashes, e.g. a/b/1/c/d PathStyle = SeparatorStyle{Middle: "/"} // Separate ala Rails, e.g. "a[b][c][1][d]" RailsStyle = SeparatorStyle{Before: "[", After: "]"} // Separate with underscores, e.g. "a_b_1_c_d" UnderscoreStyle = SeparatorStyle{Middle: "_"} )
Default styles
var NotValidInputError = errors.New("Not a valid input: map or slice")
Nested input must be a map or slice
var NotValidJsonInputError = errors.New("Not a valid input, must be a map")
JSON nested input must be a map
Functions ¶
func Flatten ¶
func Flatten(nested map[string]interface{}, prefix string, style SeparatorStyle) (map[string]interface{}, error)
Flatten generates a flat map from a nested one. The original may include values of type map, slice and scalar, but not struct. Keys in the flat map will be a compound of descending map keys and slice iterations. The presentation of keys is set by style. A prefix is joined to each key.
func FlattenString ¶
func FlattenString(nestedstr, prefix string, style SeparatorStyle) (string, error)
FlattenString generates a flat JSON map from a nested one. Keys in the flat map will be a compound of descending map keys and slice iterations. The presentation of keys is set by style. A prefix is joined to each key.
func Unflatten ¶
Unflatten converts a map where the keys are dot-notation paths, and convert them back to a nested map. keys with a number, i.e. "path.0" will be converted to arrays {"path":[0]}
func UnflattenOrdered ¶
UnflattenOrdered unflatten an already flattened map in the order given by the keys Only the given keys are processed meaning that it can be used to limit the number of keys included in the output
Types ¶
type SeparatorStyle ¶
type SeparatorStyle struct { Before string // Prepend to key Middle string // Add between keys After string // Append to key }
The style of keys. If there is an input with two nested keys "f" and "g", with "f" at the root,
{ "f": { "g": ... } }
the output will be the concatenation
f{Middle}{Before}g{After}...
Any struct element may be blank. If you use Middle, you will probably leave Before & After blank, and vice-versa. See examples in flatten_test.go and the "Default styles" here.