-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathexample_flatmap_test.go
102 lines (91 loc) · 1.48 KB
/
example_flatmap_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package flatmap_test
import (
"encoding/json"
"fmt"
"github.com/nextmv-io/sdk/flatmap"
)
func ExampleDo() {
nested := map[string]any{
"a": "foo",
"b": []any{
map[string]any{
"c": "bar",
"d": []any{
map[string]any{
"e": 2,
},
true,
},
},
map[string]any{
"c": "baz",
"d": []any{
map[string]any{
"e": 3,
},
false,
},
},
},
}
flattened := flatmap.Do(nested)
b, err := json.MarshalIndent(flattened, "", " ")
if err != nil {
panic(err)
}
fmt.Println(string(b))
// Output:
// {
// "$.a": "foo",
// "$.b[0].c": "bar",
// "$.b[0].d[0].e": 2,
// "$.b[0].d[1]": true,
// "$.b[1].c": "baz",
// "$.b[1].d[0].e": 3,
// "$.b[1].d[1]": false
// }
}
func ExampleUndo() {
flattened := map[string]any{
"$.a": "foo",
"$.b[0].c": "bar",
"$.b[0].d[0].e": 2,
"$.b[0].d[1]": true,
"$.b[1].c": "baz",
"$.b[1].d[0].e": 3,
"$.b[1].d[1]": false,
}
nested, err := flatmap.Undo(flattened)
if err != nil {
panic(err)
}
b, err := json.MarshalIndent(nested, "", " ")
if err != nil {
panic(err)
}
fmt.Println(string(b))
// Output:
// {
// "a": "foo",
// "b": [
// {
// "c": "bar",
// "d": [
// {
// "e": 2
// },
// true
// ]
// },
// {
// "c": "baz",
// "d": [
// {
// "e": 3
// },
// false
// ]
// }
// ]
// }
}