painlessjson 1.0.1

Converting custom types to and from JSON the painless way.


To use this package, put the following dependency into your project's dependencies section:

dub.json
dub.sdl

Painless JSON Build Status

Library to painlessly convert your custom types (structs and classes) to and from JSON. This library provides the function toJSON and fromJSON to automatically convert any type to and from JSON. It is possible to override the implementation by defining your own _toJSON and _fromJSON member functions for a type or with User Defined Attributes. The default conversion works by converting all member variables of a type to and from JSON (including functions with the @property attribute).

Painlessjson works by serializing a class/struct using compile time reflection and converts the public fields to a JSON object. You can influence the serialisation/seserialization with the following User Defined Attributes:

  • @SerializeToIgnore @SerializeToIgnore disable serialization in the from step or the to step
  • @SerializeIgnore is the same as combining @SerializeToIgnore @SerializeToIgnore and disables serialization/deserialization for the variable
  • @SerializedName('Name') Use specified name when serializing/deserializing
  • @SerializedName('To', 'From') Use a different name when serializing/deserializing
  • @SerializedToName('To') @SerializedFromName('From') Alternative way of defining names.

Installation

Installation is mostly managed through http://code.dlang.org, so you can add it to your dependencies in your dub.json file.

You can also generate the library by hand with:

git clone http://github.com/BlackEdder/painlessjson.git
cd painlessjson 
dub build -b release

Examples

import std.json;
import painlessjson;

struct Point
{
    double x = 0;
    double y = 1;
}

Point point;
auto json = point.toJSON; // => q{{"x":0,"y":1}}
auto newPoint = fromJSON!Point(parseJSON(q{{"x":-1,"y":2}}));

More detailed examples can be found by generating the documentation

dub -b docs

Performance

The library uses compile time reflection to find the fields in your classes. This generates the same code as a handwritten implementation would. It uses std.json on the backend and performance is mainly determined by the std.json implementation. At the moment of writing (2014) std.json is known to be slow compared to other languages. Hopefully, this will be improved over time.

Tested compilers

dmd-2.066.1 DMD-2.065.0 DMD-2.064.2 LDC-0.14.0 LDC-0.15.1 GDC-4.9.0

Authors:
  • Edwin van Leeuwen
  • Pierre Krafft
Dependencies:
none
Versions:
1.3.9 2018-Jul-07
1.3.8 2016-Nov-17
1.3.7 2016-Apr-14
1.3.6 2016-Jan-21
1.3.5 2015-Sep-02
Show all 17 versions
Download Stats:
  • 2 downloads today

  • 20 downloads this week

  • 99 downloads this month

  • 7044 downloads total

Score:
0.9
Short URL:
painlessjson.dub.pm