So perhaps I am the only person in the world using std.json, but I was wondering
if the following code should work.

=====================================================================
import std.json;
import std.conv;
import std.stdio;

struct Person {
    string name;
    float income;

    this (string name, float income) {
        this.name = name;
        this.income = income;
    }

    this(JSONValue js) {
        this.name = to!string(js["name"]);
/* This next line crashes with .. JSONValue is not floating type.
         *      to!float( js["income"].toString()) works.
         */
        this.income = js["income"].floating;
    }

    JSONValue toJSON() {
        JSONValue json;
        json["name"] = JSONValue(this.name);
        json["income"] = JSONValue(this.income);
        return json;
    }
}


int main(string[] argv) {
    Person bob = Person("Bob", 0.0);

    string bob_json = bob.toJSON().toString();

    Person sonofbob = Person(parseJSON(bob_json));

    writeln(sonofbob.toJSON().toPrettyString());

    return 0;
}
=======================================================================

The crash is caused because the 'income' field with value 0.0 is
output as 0 (rather than 0.0) and when it is read this is interpreted
as an integer.

Shouldn't this work?

Reply via email to