gojay

high performance JSON encoder/decoder with stream API for Golang
git clone git://git.lair.cx/gojay
Log | Files | Refs | README | LICENSE

commit f4c5a97b2ce16ce14e1d30875b7cecf1f1f4f7a8
parent 71c0966e1a7260957ced1f424f1bc2219207eda1
Author: Francois Parquet <francois.parquet@gmail.com>
Date:   Thu,  2 Aug 2018 15:30:03 +0800

Merge pull request #55 from lorenzo-stoakes/master

Add support for negative floats with 0 significand
Diffstat:
Mdecode_number_float.go | 4++--
Mdecode_number_float_test.go | 10++++++++++
2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/decode_number_float.go b/decode_number_float.go @@ -53,7 +53,7 @@ func (dec *Decoder) getFloatNegative() (float64, error) { // look for following numbers for ; dec.cursor < dec.length || dec.read(); dec.cursor++ { switch dec.data[dec.cursor] { - case '1', '2', '3', '4', '5', '6', '7', '8', '9': + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': return dec.getFloat() default: return 0, dec.raiseInvalidJSONErr(dec.cursor) @@ -203,7 +203,7 @@ func (dec *Decoder) getFloat32Negative() (float32, error) { // look for following numbers for ; dec.cursor < dec.length || dec.read(); dec.cursor++ { switch dec.data[dec.cursor] { - case '1', '2', '3', '4', '5', '6', '7', '8', '9': + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': return dec.getFloat32() default: return 0, dec.raiseInvalidJSONErr(dec.cursor) diff --git a/decode_number_float_test.go b/decode_number_float_test.go @@ -195,6 +195,11 @@ func TestDecoderFloat64(t *testing.T) { expectedResult: -788.76, }, { + name: "basic-float3", + json: "-0.1234", + expectedResult: -0.1234, + }, + { name: "basic-exp-too-big", json: "1e10000000000 ", expectedResult: 0, @@ -539,6 +544,11 @@ func TestDecoderFloat32(t *testing.T) { expectedResult: -788.76, }, { + name: "basic-float3", + json: "-0.1234", + expectedResult: -0.1234, + }, + { name: "error", json: "83zez4", expectedResult: 0,