{"record":{"id":"61303f9ab0b581ba","repo":"mikefarah/yq","slug":"expected-to-find-one-key-entry-but-found-v-in-p","errorCode":null,"errorMessage":"expected to find one 'key' entry but found %v in position %v","messagePattern":"expected to find one 'key' entry but found (.+?) in position (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/yqlib/operator_entries.go","lineNumber":72,"sourceCode":"\t\tdefault:\n\t\t\tif candidate.Tag != \"!!null\" {\n\t\t\t\treturn Context{}, fmt.Errorf(\"%v has no keys\", candidate.Tag)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn context.ChildContext(results), nil\n}\n\nfunc parseEntry(candidateNode *CandidateNode, position int) (*CandidateNode, *CandidateNode, error) {\n\tprefs := traversePreferences{DontAutoCreate: true}\n\n\tkeyResults, err := traverseMap(Context{}, candidateNode, createStringScalarNode(\"key\"), prefs, false)\n\n\tif err != nil {\n\t\treturn nil, nil, err\n\t} else if keyResults.Len() != 1 {\n\t\treturn nil, nil, fmt.Errorf(\"expected to find one 'key' entry but found %v in position %v\", keyResults.Len(), position)\n\t}\n\n\tvalueResults, err := traverseMap(Context{}, candidateNode, createStringScalarNode(\"value\"), prefs, false)\n\n\tif err != nil {\n\t\treturn nil, nil, err\n\t} else if valueResults.Len() != 1 {\n\t\treturn nil, nil, fmt.Errorf(\"expected to find one 'value' entry but found %v in position %v\", valueResults.Len(), position)\n\t}\n\n\treturn keyResults.Front().Value.(*CandidateNode), valueResults.Front().Value.(*CandidateNode), nil\n\n}\n\nfunc fromEntries(candidateNode *CandidateNode) (*CandidateNode, error) {\n\tvar node = candidateNode.CopyWithoutContent()\n\n\tvar contents = candidateNode.Content","sourceCodeStart":54,"sourceCodeEnd":90,"githubUrl":"https://github.com/mikefarah/yq/blob/8b5af0694bb82b41d4ae180fac9972029066f90a/pkg/yqlib/operator_entries.go#L54-L90","documentation":"fromEntries→parseEntry traverses each entry map for its 'key' field with auto-creation disabled, and expects exactly one result. The traversal returned a different count (%v) for the entry at position %v — usually the entry is missing 'key' entirely, or contains a nested 'key' collection producing multiple matches.","triggerScenarios":"Thrown at pkg/yqlib/operator_entries.go:72 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure every entry from to_entries keeps both 'key' and 'value' fields","Do not drop or rename 'key' when transforming entries before from_entries","Guard: entries | map(select(has(\"key\"))) | from_entries"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8b5af0694bb82b41d4ae180fac9972029066f90a","analyzedAt":"2026-09-05T10:57:22.766Z","contentChangedAt":"2026-09-05T10:57:22.766Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}