Dackson is a loose port Java's Jackson library for serializing and deserializing JSON data into user-defined data structures.
Dackson is published on the DUB package registry.
To deserialize a datatype, you must first define it! Dackson will work with any
mutable struct, though you can add additional JsonProperty
annotations if the
D field name differs from the actual field name.
import dackson;
struct User {
@JsonProperty("user_id") long userId;
string username;
}
Then use the decodeJson
function to decode the JSON (in string form) into a D type.
string json = `{"user_id": 1234, "username": "John Smith"}`;
User u = decodeJson!(User)(json); // User(1234, "John Smith")
Or use unified function call syntax:
string json = `{"user_id": 1234, "username": "John Smith"}`;
User u = json.decodeJson!User; // User(1234, "John Smith")
Encode using the encodeJson
function. The JsonProperty
annotations will be respected.
import dackson;
struct User {
@JsonProperty("user_id") long userId;
string username;
}
string encoded = encodeJson(User(1234, "John Smith")); // {"user_id":1234,"username":"John Smith"}
- Support for classes and immutable structures.
@JsonIgnore
annotations- Special behavior for missing/null values