jsonparser
jsonparser copied to clipboard
how to get len of object or array
Currently I use this code to get len. Is there any way more directly?
func getObjectLen(value []byte) (int, error) {
ret := 0
objectCallback := func(key []byte, value []byte, dataType jsonparser.ValueType, offset int) error {
ret++
return nil
}
if err := jsonparser.ObjectEach(value, objectCallback); err != nil {
return 0, fmt.Errorf("getObjectLen ObjectEach error: %v", err)
}
return ret, nil
}
func getArrayLen(value []byte) (int, error) {
ret := 0
arrayCallback := func(value []byte, dataType jsonparser.ValueType, offset int, err error) {
ret++
}
if _, err := jsonparser.ArrayEach(value, arrayCallback); err != nil {
return 0, fmt.Errorf("getArrayLen ArrayEach error: %v", err)
}
return ret, nil
}
you'd better not declare the callback function separately, and your ArrayEach function lacked "keys" parameter(s)