std.json parsing real numbers.

H. S. Teoh hsteoh at quickfur.ath.cx
Thu Aug 8 11:55:25 PDT 2013


On Thu, Aug 08, 2013 at 08:46:15PM +0200, Borislav Kosharov wrote:
> On Thursday, 8 August 2013 at 16:05:56 UTC, Nick Sabalausky wrote:
> >On Thu, 08 Aug 2013 17:20:16 +0200
> >"Borislav Kosharov" <bosak at gmail.com> wrote:
> >
> >>On Thursday, 8 August 2013 at 10:13:51 UTC, khurshid wrote:
> >>> On Thursday, 8 August 2013 at 10:11:07 UTC, MrSmith wrote:
> >>>> On Thursday, 8 August 2013 at 08:04:49 UTC, khurshid wrote:
> >>>>>
> >>>>> I just check  std.json for parsing real numbers.
> >>>>>
> >>>>> import std.json;
> >>>>> import std.stdio: writeln;
> >>>>>
> >>>>> int main()
> >>>>> {
> >>>>> 	auto json = parseJSON("1        .24E          +1");
> >>>>> 	writeln(toJSON(&json));
> >>>>> 	return 0;
> >>>>> }
> >>>>>
> >>>>> and
> >>>>> output:  12.4
> >>>>>
> >>>>>
> >>>>> It's bug or normal ?
> >>>>
> >>>> Yep, because 1.24E+1 is 12.4E0
> >>>
> >>> I wrote not a "1.24E+1", a "1     .24E     +1"  with leading >
> >>spaces.
> >>
> >>Well what should it be if it's not 12.4?
> >
> >A syntax error.
> 
> I don't think this would cause any problems. It would just throw
> syntax error because there is white-space between? It would be just
> annoying to get syntax error because of extra white-space.
> 
> Maybe this is one of the situations where we should think "It's not
> a bug, it's a feature!"
> 
> Unless there is a situation that would make no sense to work or
> something, it should be left like it is now.

This makes std.json non-conformant to the JSON spec. What if the extra
white-space is an indication of data corruption? We should not blindly
accept it just because we can.


T

-- 
"Life is all a great joke, but only the brave ever get the point." -- Kenneth Rexroth


More information about the Digitalmars-d mailing list