aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/json/decode.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/encoding/json/decode.go')
-rw-r--r--src/encoding/json/decode.go17
1 files changed, 3 insertions, 14 deletions
diff --git a/src/encoding/json/decode.go b/src/encoding/json/decode.go
index 0a1cadf42e..53470d8c88 100644
--- a/src/encoding/json/decode.go
+++ b/src/encoding/json/decode.go
@@ -690,20 +690,9 @@ func (d *decodeState) object(v reflect.Value) error {
}
subv = mapElem
} else {
- var f *field
- if i, ok := fields.nameIndex[string(key)]; ok {
- // Found an exact name match.
- f = &fields.list[i]
- } else {
- // Fall back to the expensive case-insensitive
- // linear search.
- for i := range fields.list {
- ff := &fields.list[i]
- if ff.equalFold(ff.nameBytes, key) {
- f = ff
- break
- }
- }
+ f := fields.byExactName[string(key)]
+ if f == nil {
+ f = fields.byFoldedName[string(foldName(key))]
}
if f != nil {
subv = v