File: example_test.go

package info (click to toggle)
golang-github-exponent-io-jsonpath 0.0~git20151013.0.d6023ce-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 116 kB
  • ctags: 50
  • sloc: makefile: 2
file content (109 lines) | stat: -rw-r--r-- 2,039 bytes parent folder | download | duplicates (2)
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
103
104
105
106
107
108
109
package jsonpath

import (
	"bytes"
	"fmt"
	"io"
)

func ExampleDecoder_SeekTo() {

	var j = []byte(`[
		{"Space": "YCbCr", "Point": {"Y": 255, "Cb": 0, "Cr": -10}},
		{"Space": "RGB",   "Point": {"R": 98, "G": 218, "B": 255}}
	]`)

	w := NewDecoder(bytes.NewReader(j))
	var v interface{}

	w.SeekTo(0, "Space")
	w.Decode(&v)
	fmt.Println(0, "Space", v)

	w.SeekTo(0, "Point", "Cr")
	w.Decode(&v)
	fmt.Println(0, "Point", "Cr", v)

	w.SeekTo(1, "Point", "G")
	w.Decode(&v)
	fmt.Println(1, "Point", "G", v)

	// Output:
	// 0 Space YCbCr
	// 0 Point Cr -10
	// 1 Point G 218
}

func ExampleDecoder_Scan() {

	var j = []byte(`{"colors":[
		{"Space": "YCbCr", "Point": {"Y": 255, "Cb": 0, "Cr": -10, "A": 58}},
		{"Space": "RGB",   "Point": {"R": 98, "G": 218, "B": 255, "A": 231}}
	]}`)

	var actions PathActions

	// Extract the value at Point.A
	actions.Add(func(d *Decoder) error {
		var alpha int
		err := d.Decode(&alpha)
		fmt.Printf("Alpha: %v\n", alpha)
		return err
	}, "Point", "A")

	w := NewDecoder(bytes.NewReader(j))
	w.SeekTo("colors", 0)

	var ok = true
	var err error
	for ok {
		ok, err = w.Scan(&actions)
		if err != nil && err != io.EOF {
			panic(err)
		}
	}

	// Output:
	// Alpha: 58
	// Alpha: 231
}

func ExampleDecoder_Scan_anyIndex() {

	var j = []byte(`{"colors":[
		{"Space": "YCbCr", "Point": {"Y": 255, "Cb": 0, "Cr": -10, "A": 58}},
		{"Space": "RGB",   "Point": {"R": 98, "G": 218, "B": 255, "A": 231}}
	]}`)

	var actions PathActions

	// Extract the value at Point.A
	actions.Add(func(d *Decoder) error {
		var cr int
		err := d.Decode(&cr)
		fmt.Printf("Chrominance (Cr): %v\n", cr)
		return err
	}, "colors", AnyIndex, "Point", "Cr")

	actions.Add(func(d *Decoder) error {
		var r int
		err := d.Decode(&r)
		fmt.Printf("Red: %v\n", r)
		return err
	}, "colors", AnyIndex, "Point", "R")

	w := NewDecoder(bytes.NewReader(j))

	var ok = true
	var err error
	for ok {
		ok, err = w.Scan(&actions)
		if err != nil && err != io.EOF {
			panic(err)
		}
	}

	// Output:
	// Chrominance (Cr): -10
	// Red: 98
}