https://issues.dlang.org/show_bug.cgi?id=16432
Issue ID: 16432
Summary: JSON incorrectly parses to string
Product: D
Version: D2
Hardware: x86
OS: Mac OS X
Status: NEW
Severity: normal
Priority: P1
Component: phobos
Assignee: [email protected]
Reporter: [email protected]
Trying to copy a JSONValue via .toString.parseJSON, see
https://forum.dlang.org/thread/[email protected]
found an error during conversion to string:
If a value is a floating type, which ends with a .0 during conversion to
string, the part after the point is cut away and the value is interpreted as an
integer afterwards.
void main()
{
import std.json;
import std.stdio;
string s = "{\"rating\": 3.0 }";
JSONValue j = parseJSON(s);
assert(j["rating"].type == JSON_TYPE.FLOAT);
writeln(j.toString);
j = j.toString.parseJSON;
assert(j["rating"].type != JSON_TYPE.FLOAT);
assert(j["rating"].type == JSON_TYPE.INTEGER);
}
If the value is like "3.1" the bug doesn't appear.
--