@@ -55,10 +55,16 @@ if value, _, err := jsonparser.GetInt(data, "company", "size"); err == nil {
5555 size = value
5656}
5757
58- // You can use `ArrayEach` helper to iterate items
58+ // You can use `ArrayEach` helper to iterate items [item1, item2 .... itemN]
5959jsonparser.ArrayEach (data, func (value []byte , dataType jsonparser.ValueType , offset int , err error ) {
6060 fmt.Println (jsonparser.Get (value, " url" ))
61- }, " person" , " gravatar" , " avatars" )
61+ }, " person" , " avatars" )
62+
63+ // You can use `ObjectEach` helper to iterate objects { "key1":object1, "key2":object2, .... "keyN":objectN }
64+ jsonparser.ObjectEach (data, func (key []byte , value []byte , dataType jsonparser.ValueType , offset int ) error {
65+ fmt.Printf (" Key: '%s '\n Value: '%s '\n Type: %s \n " , string (key), string (value), dataType)
66+ return nil
67+ }, " person" , " name" )
6268```
6369
6470## Need to speedup your app?
@@ -125,6 +131,20 @@ func ArrayEach(data []byte, cb func(value []byte, dataType jsonparser.ValueType,
125131```
126132Needed for iterating arrays, accepts a callback function with the same return arguments as `Get`.
127133
134+ ### **`ObjectEach`**
135+ ```go
136+ func ObjectEach(data []byte, callback func(key []byte, value []byte, dataType ValueType, offset int) error, keys ...string) (err error)
137+ ```
138+ Needed for iterating object, accepts a callback function. Example:
139+ ```go
140+ var handler func([]byte, []byte, jsonparser.ValueType, int) error
141+ handler = func(key []byte, value []byte, dataType jsonparser.ValueType, offset int) error {
142+ // do stuff here
143+ }
144+ jsonparser.ObjectEach (myJson, handler)
145+ ```
146+
147+
128148### ** ` KeyEach ` **
129149``` go
130150func KeyEach (data []byte , cb func (idx int , value []byte , dataType jsonparser.ValueType , err error ), paths ...[]string )
0 commit comments