-
Notifications
You must be signed in to change notification settings - Fork 1
/
example_test.go
62 lines (57 loc) · 1.55 KB
/
example_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
package flatjson_test
import (
"fmt"
"github.com/aybabtme/flatjson"
)
func ExampleScanObject() {
data := []byte(`{
"hello":["world"],
"bonjour": {"le": "monde"}
}`)
flatjson.ScanObject(data, 0, &flatjson.Callbacks{
MaxDepth: 99,
OnNumber: func(prefixes flatjson.Prefixes, val flatjson.Number) {
fmt.Printf("path=%s\n", prefixes.AsString(data))
if val.Name.IsObjectKey() {
fmt.Printf("key=%s\n", val.Name.String(data))
} else {
fmt.Printf("index=%d\n", val.Name.Index())
}
fmt.Printf("value=%f\n", val.Value)
},
OnString: func(prefixes flatjson.Prefixes, val flatjson.String) {
fmt.Printf("path=%s\n", prefixes.AsString(data))
if val.Name.IsObjectKey() {
fmt.Printf("key=%s\n", val.Name.String(data))
} else {
fmt.Printf("index=%d\n", val.Name.Index())
}
fmt.Printf("value=%q\n", val.Value.String(data))
},
OnBoolean: func(prefixes flatjson.Prefixes, val flatjson.Bool) {
fmt.Printf("path=%s\n", prefixes.AsString(data))
if val.Name.IsObjectKey() {
fmt.Printf("key=%s\n", val.Name.String(data))
} else {
fmt.Printf("index=%d\n", val.Name.Index())
}
fmt.Printf("value=%v\n", val.Value)
},
OnNull: func(prefixes flatjson.Prefixes, val flatjson.Null) {
fmt.Printf("path=%s\n", prefixes.AsString(data))
if val.Name.IsObjectKey() {
fmt.Printf("key=%s\n", val.Name.String(data))
} else {
fmt.Printf("index=%d\n", val.Name.Index())
}
fmt.Printf("NULL!")
},
})
// Output:
// path=hello
// index=0
// value="\"world\""
// path=bonjour
// key="le"
// value="\"monde\""
}