struct Foo { int number; string str; } Foo f; f.number = 12; f.str = "hello"; string json = serializeToJsonString(f); assert(json == `{"number":12,"str":"hello"}`); Json jsonval = serializeToJson(f); assert(jsonval.type == Json.Type.object); assert(jsonval["number"] == Json(12)); assert(jsonval["str"] == Json("hello"));
deserializeJson, vibe.data.serialization
Serializes the given value to JSON.
The following types of values are supported:
All entries of an array or an associative array, as well as all R/W properties and all public fields of a struct/class are recursively serialized using the same rules.
Fields ending with an underscore will have the last underscore stripped in the serialized output. This makes it possible to use fields with D keywords as their name by simply appending an underscore.
The following methods can be used to customize the serialization of structs/classes:
The methods will have to be defined in pairs. The first pair that is implemented by the type will be used for serialization (i.e. toJson overrides toString).