getsops/sops · error

SOPS only supports JSON files with a top-level object (start

Error message

SOPS only supports JSON files with a top-level object (starting with '{'), not other JSON types. Got %#v of type %T instead

What it means

Error "SOPS only supports JSON files with a top-level object (starting with '{'), not other JSON types. Got %#v of type %T instead" thrown in getsops/sops.

Source

Thrown at stores/json/store.go:299

	dec := json.NewDecoder(bytes.NewReader(in))
	// Decode numbers as json.Number instead of the default float64, then
	// normalize each to int/float64 (see normalizeJSONNumber). The default
	// float64 silently loses precision for integers larger than 2^53.
	dec.UseNumber()
	value, err := dec.Token()
	if err != nil {
		return nil, err
	}
	if delim, ok := value.(json.Delim); ok {
		if delim.String() != "{" {
			return nil, fmt.Errorf("SOPS only supports JSON files with a top-level object (starting with '{'), not arrays or other types. Got delimiter %s instead. To encrypt this file, wrap it in an object, e.g., {\"data\": [...]}", value)
		}
	} else {
		v, nerr := normalizeJSONNumber(value)
		if nerr != nil {
			v = value
		}
		return nil, fmt.Errorf("SOPS only supports JSON files with a top-level object (starting with '{'), not other JSON types. Got %#v of type %T instead", v, v)
	}
	return store.treeBranchFromJSONDecoder(dec)
}

func (store Store) reindentJSON(in []byte) ([]byte, error) {
	var out bytes.Buffer
	indent := "\t"
	if store.config.Indent > -1 {
		indent = strings.Repeat(" ", store.config.Indent)
	} else if store.config.Indent < -1 {
		return nil, errors.New("JSON Indentation parameter smaller than -1 is not accepted")
	}
	err := json.Indent(&out, in, "", indent)
	return out.Bytes(), err
}

// LoadEncryptedFile loads an encrypted secrets file onto a sops.Tree object
func (store *Store) LoadEncryptedFile(in []byte) (sops.Tree, error) {

View on GitHub (pinned to 13442bb981)

When it happens

Trigger: Thrown at stores/json/store.go:299 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of getsops/sops@13442bb981 (2026-09-01). Data as JSON: /api/errors/d7c7634e391178ad. Report an issue: GitHub.