1
0
mirror of https://github.com/json-iterator/go.git synced 2025-07-03 23:30:41 +02:00

fix #181, support string as json.Number and jsoniter.Number

This commit is contained in:
Tao Wen
2017-10-06 18:08:14 +08:00
parent 73c7bc881e
commit 8f50a91be2
2 changed files with 22 additions and 2 deletions

View File

@ -441,7 +441,11 @@ type jsonNumberCodec struct {
}
func (codec *jsonNumberCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
*((*json.Number)(ptr)) = json.Number([]byte(iter.readNumberAsString()))
if iter.WhatIsNext() == StringValue {
*((*json.Number)(ptr)) = json.Number(iter.ReadString())
} else {
*((*json.Number)(ptr)) = json.Number([]byte(iter.readNumberAsString()))
}
}
func (codec *jsonNumberCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
@ -460,7 +464,11 @@ type jsoniterNumberCodec struct {
}
func (codec *jsoniterNumberCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
*((*Number)(ptr)) = Number([]byte(iter.readNumberAsString()))
if iter.WhatIsNext() == StringValue {
*((*Number)(ptr)) = Number(iter.ReadString())
} else {
*((*Number)(ptr)) = Number([]byte(iter.readNumberAsString()))
}
}
func (codec *jsoniterNumberCodec) Encode(ptr unsafe.Pointer, stream *Stream) {