1
0
mirror of https://github.com/json-iterator/go.git synced 2025-08-13 22:12:45 +02:00

optimize read string

This commit is contained in:
Tao Wen
2016-12-06 10:53:50 +08:00
parent 38120d5ff2
commit 48544a1e79

View File

@@ -253,7 +253,7 @@ func (iter *Iterator) ReadInt64() (ret int64) {
} }
func (iter *Iterator) ReadString() (ret string) { func (iter *Iterator) ReadString() (ret string) {
str := make([]byte, 0, 10) str := make([]byte, 0, 8)
c := iter.readByte() c := iter.readByte()
if iter.Error != nil { if iter.Error != nil {
return return
@@ -338,7 +338,7 @@ func (iter *Iterator) ReadString() (ret string) {
return return
} }
case '"': case '"':
return string(str) return *(*string)(unsafe.Pointer(&str))
default: default:
str = append(str, c) str = append(str, c)
} }
@@ -484,11 +484,7 @@ func (iter *Iterator) ReadObject() (ret string) {
return "" // end of object return "" // end of object
case '"': case '"':
iter.unreadByte() iter.unreadByte()
field := iter.readObjectField() return iter.readObjectField()
if iter.Error != nil {
return
}
return field
default: default:
iter.ReportError("ReadObject", `expect " after {`) iter.ReportError("ReadObject", `expect " after {`)
return return
@@ -496,11 +492,7 @@ func (iter *Iterator) ReadObject() (ret string) {
} }
case ',': case ',':
iter.skipWhitespaces() iter.skipWhitespaces()
field := iter.readObjectField() return iter.readObjectField()
if iter.Error != nil {
return
}
return field
case '}': case '}':
return "" // end of object return "" // end of object
default: default: