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.