Documentation
¶
Overview ¶
Flatten makes flat, one-dimensional maps from arbitrarily nested ones.
Map keys turn into compound names, like `a.b.1.c` (dotted style) or `a[b][1][c]` (Rails style). It takes input as either JSON strings or Go structures. It (only) knows how to traverse JSON types: maps, slices and scalars.
You can flatten JSON strings.
nested := `{
"one": {
"two": [
"2a",
"2b"
]
},
"side": "value"
}`
flat, err := FlattenString(nested, "", DotStyle)
// output: `{ "one.two.0": "2a", "one.two.1": "2b", "side": "value" }`
Or Go maps directly.
t := map[string]interface{}{
"a": "b",
"c": map[string]interface{}{
"d": "e",
"f": "g",
},
"z": 1.4567,
}
flat, err := Flatten(nested, "", RailsStyle)
// output:
// map[string]interface{}{
// "a": "b",
// "c[d]": "e",
// "c[f]": "g",
// "z": 1.4567,
// }
Index ¶
- Variables
- func Flatten(nested map[string]interface{}, prefix string, style SeparatorStyle) (map[string]interface{}, error)
- func FlattenAll(nested interface{}, prefix string, style SeparatorStyle, sorted bool) ([]string, error)
- func FlattenString(nestedstr, prefix string, style SeparatorStyle) (string, error)
- type SeparatorStyle
Constants ¶
This section is empty.
Variables ¶
var NotValidInputError = errors.New("Not a valid input: map or slice")
Nested input must be a map or slice
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 FlattenAll ¶
func FlattenAll(nested interface{}, prefix string, style SeparatorStyle, sorted bool) ([]string, error)
FlattenAll generates a flat array from a nested map. The original may include values of type map, slice and scalar, but not struct. Items in the flat array 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.
Types ¶
type SeparatorStyle ¶
type SeparatorStyle int
The presentation style of keys.
const ( // Separate nested key components with dots, e.g. "a.b.1.c.d" DotStyle SeparatorStyle // Separate nested key components with slashs, e.g. "a/b/1/c/d" SlashStyle // Separate ala Rails, e.g. "a[b][c][1][d]" RailsStyle )
