Re: JSON float number as string

From: Date: Tue, 14 Apr 2015 04:31:17 +0000
Subject: Re: JSON float number as string
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-85796@lists.php.net to get a copy of this message
> On 29 Mar 2015, at 22:33, Jakub Zelenka <bukka@php.net> wrote: > > I would like to add a new option to JSON for dealing with large floats. The > use case is mainly for decoder but can be used for encoder as well. > > JSON_FLOAT_AS_STRING > decode: all float values will be decoded as string > - It's often an issue for very large float values with many fractional > digits that are coming from platforms that support larger float > representation than double. In that case the conversion is lost and there > is no way how to get it back (see http://bugs.php.net/68456 > [pls ignore my > initial dump comments when I didn't get the issue :)] and an example of the > lost precision here http://3v4l.org/80iCh ). Converting the > value to string > keep the precision and resolves the problem. > > encode: all float values will be encoded as string > - re-using the constant for encoder makes sense if PHP creates JSON for > platform that support lower float type (e.g. C float) and the precision > loss is not acceptable > > > I think that this is more a bugfix as the precision is lost without any way > how to get it back (except pre-processing json string with regular > expression). I would like to add it to 5.6.x if there are no objections? Feels a bit hackish I think it is possible to introduce an overall better solution We can expose result of json-tokenizing as a tree of objects: JSON\Object JSON\Array JSON\String JSON\Number JSON\False JSON\True JSON\Null then, it would be possible to introduce any number of experimental userland implementations like the one proposed here -- Alexey Zakhlestin https://github.com/indeyets PGP key: http://indeyets.ru/alexey.zakhlestin.pgp.asc

« previous php.internals (#85796) next »