Skip to content

Commit 64cc784

Browse files
committed
remove special handling for field
1 parent 477be43 commit 64cc784

File tree

3 files changed

+22
-48
lines changed

3 files changed

+22
-48
lines changed

feature_iter_object.go

+18-38
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package jsoniter
33
import (
44
"fmt"
55
"unicode"
6-
"unsafe"
76
)
87

98
// ReadObject read one field from object.
@@ -19,33 +18,25 @@ func (iter *Iterator) ReadObject() (ret string) {
1918
c = iter.nextToken()
2019
if c == '"' {
2120
iter.unreadByte()
22-
if iter.cfg.objectFieldMustBeSimpleString {
23-
return string(iter.readObjectFieldAsBytes())
24-
} else {
25-
field := iter.ReadString()
26-
c = iter.nextToken()
27-
if c != ':' {
28-
iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
29-
}
30-
return field
21+
field := iter.ReadString()
22+
c = iter.nextToken()
23+
if c != ':' {
24+
iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
3125
}
26+
return field
3227
}
3328
if c == '}' {
3429
return "" // end of object
3530
}
3631
iter.ReportError("ReadObject", `expect " after {, but found `+string([]byte{c}))
3732
return
3833
case ',':
39-
if iter.cfg.objectFieldMustBeSimpleString {
40-
return string(iter.readObjectFieldAsBytes())
41-
} else {
42-
field := iter.ReadString()
43-
c = iter.nextToken()
44-
if c != ':' {
45-
iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
46-
}
47-
return field
34+
field := iter.ReadString()
35+
c = iter.nextToken()
36+
if c != ':' {
37+
iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
4838
}
39+
return field
4940
case '}':
5041
return "" // end of object
5142
default:
@@ -115,36 +106,25 @@ func calcHash(str string) int32 {
115106
// ReadObjectCB read object with callback, the key is ascii only and field name not copied
116107
func (iter *Iterator) ReadObjectCB(callback func(*Iterator, string) bool) bool {
117108
c := iter.nextToken()
118-
var fieldBytes []byte
119109
var field string
120110
if c == '{' {
121111
c = iter.nextToken()
122112
if c == '"' {
123113
iter.unreadByte()
124-
if iter.cfg.objectFieldMustBeSimpleString {
125-
fieldBytes = iter.readObjectFieldAsBytes()
126-
field = *(*string)(unsafe.Pointer(&fieldBytes))
127-
} else {
128-
field = iter.ReadString()
129-
c = iter.nextToken()
130-
if c != ':' {
131-
iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
132-
}
114+
field = iter.ReadString()
115+
c = iter.nextToken()
116+
if c != ':' {
117+
iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
133118
}
134119
if !callback(iter, field) {
135120
return false
136121
}
137122
c = iter.nextToken()
138123
for c == ',' {
139-
if iter.cfg.objectFieldMustBeSimpleString {
140-
fieldBytes = iter.readObjectFieldAsBytes()
141-
field = *(*string)(unsafe.Pointer(&fieldBytes))
142-
} else {
143-
field = iter.ReadString()
144-
c = iter.nextToken()
145-
if c != ':' {
146-
iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
147-
}
124+
field = iter.ReadString()
125+
c = iter.nextToken()
126+
if c != ':' {
127+
iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
148128
}
149129
if !callback(iter, field) {
150130
return false

feature_reflect_struct_decoder.go

+4-9
Original file line numberDiff line numberDiff line change
@@ -487,15 +487,10 @@ func (decoder *generalStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator)
487487
fieldDecoder.Decode(ptr, iter)
488488
}
489489
for iter.nextToken() == ',' {
490-
if iter.cfg.objectFieldMustBeSimpleString {
491-
fieldBytes := iter.readObjectFieldAsBytes()
492-
field = *(*string)(unsafe.Pointer(&fieldBytes))
493-
} else {
494-
field = iter.ReadString()
495-
c := iter.nextToken()
496-
if c != ':' {
497-
iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
498-
}
490+
field = iter.ReadString()
491+
c := iter.nextToken()
492+
if c != ':' {
493+
iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
499494
}
500495
fieldDecoder = decoder.fields[strings.ToLower(field)]
501496
if fieldDecoder == nil {

type_tests/struct_field_case_test.go

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package test
22

33
func init() {
4-
// TODO: fix this
54
//testCases = append(testCases,
65
// (*struct {
76
// Upper bool `json:"M"`

0 commit comments

Comments
 (0)