Trying to copy a JSONValue via .toString.parseJSON, see https://forum.dlang.org/thread/tsmllrkvdkuskroxcpcc@forum.dlang.org 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.
pull https://github.com/dlang/phobos/pull/5005
*** Issue 13660 has been marked as a duplicate of this issue. ***
@berni44 created dlang/phobos pull request #7885 "Fix Issue 16432 - JSON incorrectly parses to string" fixing this issue: - Fix Issue 16432 - JSON incorrectly parses to string https://github.com/dlang/phobos/pull/7885
dlang/phobos pull request #7885 "Fix Issue 16432 - JSON incorrectly parses to string" was merged into master: - a99ea1850c3b934f498ac774f550b5e1057e2cae by berni44: Fix Issue 16432 - JSON incorrectly parses to string https://github.com/dlang/phobos/pull/7885