mirror of https://github.com/kubernetes/kops.git
110 lines
2.0 KiB
Go
110 lines
2.0 KiB
Go
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
|
|
}
|