func getTerminalJSONPaths()

in infra/blueprint-test/pkg/utils/jsonpaths.go [66:95]


func getTerminalJSONPaths(item interface{}, crumbs []string) []string {
	var paths []string

	// Only add paths for JSON bool, number, string, and null
	switch val := item.(type) {
		case bool:
			return []string{strings.Join(crumbs, ".")}
		case float64:
			return []string{strings.Join(crumbs, ".")}
		case string:
			return []string{strings.Join(crumbs, ".")}
		case nil:
			return []string{strings.Join(crumbs, ".")}
		case []interface{}:
			for i, v := range val {
				paths = append(paths,
					getTerminalJSONPaths(v, append(crumbs, strconv.Itoa(i)))...,
				)
			}
		case map[string]interface{}:
			for k, v := range val {
				paths = append(paths,
					getTerminalJSONPaths(v, append(crumbs, k))...,
				)
			}
		}

		slices.Sort(paths)
		return paths
 }