On Monday, 3 July 2017 at 13:34:50 UTC, Adam D. Ruppe wrote:
On Monday, 3 July 2017 at 13:26:52 UTC, Yuri wrote:
Yes, when accessing .integer instead of .floating then it works, unfortunately that is not suitable for the task at hand, it has to be a float.

Just write a helper function that casts it yourself:

double numeric(JSONValue v) {
   if(v.type == JSON_VALUE.FLOAT)
        return v.floating;
   else if(v.type == JSON_VALUE.INTEGER)
        return v.integer;
else if(v.type == JSON_VALUE.UINTEGER) // I think it has this too
        return v.uinteger;
throw new Exception("not a numeric type, instead: " ~ to!string(v.type));
}


and then you should be able to do

jj.object["floats"].array[1].numeric.writeln;

and have it return float regardless of if it is 1 or 1.0

Thanks Adam, that will work for me. I wish though there was no need for jumping these hoops in a standard language lib but I guess it would be a topic for another discussion.


Reply via email to