INNER CODE UNIT · Go
findEmptyPathsRecursive
itaysk/kubectl-neat · cmd/neat.go:181
func findEmptyPathsRecursive(cur gjson.Result, path string, res *[]string) {
if isResultEmpty(cur) {
*res = append(*res, path[1:]) //remove '.' from start
return
}
if !(cur.IsArray() || cur.IsObject()) {
return
}
// sjson's ForEach doesn't put track index when iterating arrays, hence the index variable
index := -1
cur.ForEach(func(k gjson.Result, v gjson.Result) bool {
var newPath string
if cur.IsArray() {
index++
newPath = fmt.Sprintf("%s.%d", path, index)
} else {
newPath = fmt.Sprintf("%s.%s", path, k.Str)
}