|
@@ -3,6 +3,7 @@ package jsoniter
|
|
|
import (
|
|
import (
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"unicode"
|
|
"unicode"
|
|
|
|
|
+ "unsafe"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
func (iter *Iterator) ReadObject() (ret string) {
|
|
func (iter *Iterator) ReadObject() (ret string) {
|
|
@@ -79,13 +80,13 @@ func (iter *Iterator) ReadObjectCB(callback func(*Iterator, string) bool) bool {
|
|
|
c = iter.nextToken()
|
|
c = iter.nextToken()
|
|
|
if c == '"' {
|
|
if c == '"' {
|
|
|
iter.unreadByte()
|
|
iter.unreadByte()
|
|
|
- field := string(iter.readObjectFieldAsBytes())
|
|
|
|
|
- if !callback(iter, field) {
|
|
|
|
|
|
|
+ field := iter.readObjectFieldAsBytes()
|
|
|
|
|
+ if !callback(iter, *(*string)(unsafe.Pointer(&field))) {
|
|
|
return false
|
|
return false
|
|
|
}
|
|
}
|
|
|
for iter.nextToken() == ',' {
|
|
for iter.nextToken() == ',' {
|
|
|
- field = string(iter.readObjectFieldAsBytes())
|
|
|
|
|
- if !callback(iter, field) {
|
|
|
|
|
|
|
+ field = iter.readObjectFieldAsBytes()
|
|
|
|
|
+ if !callback(iter, *(*string)(unsafe.Pointer(&field))) {
|
|
|
return false
|
|
return false
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|