Skip to content
D
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
source
.gitignore
.travis.yml
LICENSE
README.md
dub.json

README.md

dackson

Build Status

Dackson is a loose port Java's Jackson library for serializing and deserializing JSON data into user-defined data structures.

Installation

Dackson is published on the DUB package registry.

Deserializing

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")

Serializing

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"}

Future Work

  • Support for classes and immutable structures.
  • @JsonIgnore annotations
  • Special behavior for missing/null values
You can’t perform that action at this time.