github.com/RevenueMonster/sqlike@v1.0.6/jsonb/array.go (about) 1 package jsonb 2 3 // ReadArray : 4 func (r *Reader) ReadArray(cb func(r *Reader) error) error { 5 c := r.nextToken() 6 if c == 'n' { 7 return r.unreadByte().skipNull() 8 } 9 10 if c != '[' { 11 return ErrInvalidJSON{ 12 callback: "ReadArray", 13 message: "expect start with [ for array", 14 } 15 } 16 17 c = r.nextToken() 18 if c == ']' { // empty array 19 return nil 20 } 21 22 r.unreadByte() 23 24 for { 25 b, err := r.ReadBytes() 26 if err != nil { 27 return err 28 } 29 30 if cb != nil { 31 it := NewReader(b) 32 if err := cb(it); err != nil { 33 return err 34 } 35 } 36 37 c = r.nextToken() 38 if c != ',' { 39 break 40 } 41 } 42 43 if c != ']' { 44 return ErrInvalidJSON{ 45 callback: "ReadArray", 46 message: "expect end with ] for array", 47 } 48 } 49 return nil 50 }