| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package jsoniter
- import (
- "fmt"
- "testing"
- "github.com/json-iterator/go/require"
- "unsafe"
- "strconv"
- )
- func Test_bind_api_demo(t *testing.T) {
- should := require.New(t)
- val := []int{}
- err := UnmarshalFromString(`[0,1,2,3] `, &val)
- should.Nil(err)
- should.Equal([]int{0, 1, 2, 3}, val)
- }
- func Test_iterator_api_demo(t *testing.T) {
- iter := ParseString(`[0,1,2,3]`)
- total := 0
- for iter.ReadArray() {
- total += iter.ReadInt()
- }
- fmt.Println(total)
- }
- type DocumentMatch struct {
- Index string `json:"index,omitempty"`
- ID string `json:"id"`
- Score float64 `json:"score"`
- Sort []string `json:"sort,omitempty"`
- }
- type DocumentMatchCollection []*DocumentMatch
- type SearchResult struct {
- Hits DocumentMatchCollection `json:"hits"`
- }
- func Test2(t *testing.T) {
- RegisterTypeEncoder("float64", func(ptr unsafe.Pointer, stream *Stream) {
- t := *((*float64)(ptr))
- stream.WriteRaw(strconv.FormatFloat(t, 'E', -1, 64))
- })
- hits := []byte(`{"hits":[{"index":"geo","id":"firehouse_grill_brewery","score":3.584608106366055e-07,
- "sort":[" \u0001@\t\u0007\u0013;a\u001b}W"]},
- {"index":"geo","id":"jack_s_brewing","score":2.3332790568885077e-07,
- "sort":[" \u0001@\u0013{w?.\"0\u0010"]},
- {"index":"geo","id":"brewpub_on_the_green","score":2.3332790568885077e-07,
- "sort":[" \u0001@\u0014\u0017+\u00137QZG"]}]}`)
- var h SearchResult
- err := Unmarshal(hits, &h)
- fmt.Printf("SR %+v \n", h.Hits[0])
- b, err := Marshal(h.Hits[0])
- if err != nil {
- fmt.Printf("error marshalling search res: %v", err)
- //return
- }
- fmt.Printf("SR %s \n", string(b))
- }
|