jsonparser icon indicating copy to clipboard operation
jsonparser copied to clipboard

how to get len of object or array

Open dunixd opened this issue 6 years ago • 1 comments

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
}

dunixd avatar Sep 03 '19 12:09 dunixd

you'd better not declare the callback function separately, and your ArrayEach function lacked "keys" parameter(s)

boli2017 avatar May 06 '20 02:05 boli2017