Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Page wiki
View or edit the community-maintained wiki page associated with this page.
std.json
JavaScript Object Notation
Synopsis:
//parse a file or string of json into a usable structure string s = "{ \"language\": \"D\", \"rating\": 3.14, \"code\": \"42\" }"; JSONValue j = parseJSON(s); writeln("Language: ", j["language"].str(), " Rating: ", j["rating"].floating() ); // j and j["language"] return JSONValue, // j["language"].str returns a string //check a type long x; if (j["code"].type() == JSON_TYPE.INTEGER) { x = j["code"].integer; } else { x = to!int(j["code"].str); } // create a json struct JSONValue jj = [ "language": "D" ]; // rating doesnt exist yet, so use .object to assign jj.object["rating"] = JSONValue(3.14); // create an array to assign to list jj.object["list"] = JSONValue( ["a", "b", "c"] ); // list already exists, so .object optional jj["list"].array ~= JSONValue("D"); s = j.toString(); writeln(s);
License:
Authors:
Jeremie Pelletier, David Herberth
References: http://json.org/
Source: std/json.d
- enum JSON_TYPE: byte;
- JSON type enumeration
- struct JSONValue;
- JSON value node
- const @property JSON_TYPE type();
- Returns the JSON_TYPE of the value stored in this structure.Examples:
string s = "{ \"language\": \"D\" }"; JSONValue j = parseJSON(s); assert(j.type == JSON_TYPE.OBJECT); assert(j["language"].type == JSON_TYPE.STRING);
- deprecated @property JSON_TYPE type(JSON_TYPE newType);
- Deprecated. Instead, please assign the value with the adequate type to JSONValue directly. This will be removed in June 2015.Sets the type of this JSONValue. Previous content is cleared.
- inout @property inout(string) str();
@property string str(string v); - Value getter/setter for JSON_TYPE.STRING.Throws JSONException for read access if type is not JSON_TYPE.STRING.Examples:
JSONValue j = [ "language": "D" ]; // get value assert(j["language"].str == "D"); // change existing key to new string j["language"].str = "Perl"; assert(j["language"].str == "Perl");
- inout @property inout(long) integer();
@property long integer(long v); - Value getter/setter for JSON_TYPE.INTEGER.Throws JSONException for read access if type is not JSON_TYPE.INTEGER.
- inout @property inout(ulong) uinteger();
@property ulong uinteger(ulong v); - Value getter/setter for JSON_TYPE.UINTEGER.Throws JSONException for read access if type is not JSON_TYPE.UINTEGER.
- inout @property inout(double) floating();
@property double floating(double v); - Value getter/setter for JSON_TYPE.FLOAT.Throws JSONException for read access if type is not JSON_TYPE.FLOAT.
- inout @property ref inout(JSONValue[string]) object();
@property JSONValue[string] object(JSONValue[string] v); - Value getter/setter for JSON_TYPE.OBJECT.Throws JSONException for read access if type is not JSON_TYPE.OBJECT.
- inout @property ref inout(JSONValue[]) array();
@property JSONValue[] array(JSONValue[] v); - Value getter/setter for JSON_TYPE.ARRAY.Throws JSONException for read access if type is not JSON_TYPE.ARRAY.
- const @property bool isNull();
- Test whether the type is JSON_TYPE.NULL
- this(T)(T arg) if (!isStaticArray!T);
this(T)(ref T arg) if (isStaticArray!T);
inout this(T : JSONValue)(inout T arg); - Constructor for JSONValue. If arg is a JSONValue its value and type will be copied to the new JSONValue. Note that this is a shallow copy: if type is JSON_TYPE.OBJECT or JSON_TYPE.ARRAY then only the reference to the data will be copied. Otherwise, arg must be implicitly convertible to one of the following types: typeof(null), string, ulong, long, double, an associative array V[K] for any V and K i.e. a JSON object, any array or bool. The type will be set accordingly.Examples:
JSONValue j = JSONValue( "a string" ); j = JSONValue(42); j = JSONValue( [1, 2, 3] ); assert(j.type == JSON_TYPE.ARRAY); j = JSONValue( ["language": "D"] ); assert(j.type == JSON_TYPE.OBJECT);
- inout ref inout(JSONValue) opIndex(size_t i);
- Array syntax for json arrays.Throws JSONException if type is not JSON_TYPE.ARRAY.Examples:
JSONValue j = JSONValue( [42, 43, 44] ); assert( j[0].integer == 42 ); assert( j[1].integer == 43 );
- inout ref inout(JSONValue) opIndex(string k);
- Hash syntax for json objects.Throws JSONException if type is not JSON_TYPE.OBJECT.Examples:
JSONValue j = JSONValue( ["language": "D"] ); assert( j["language"].str == "D" );
- void opIndexAssign(T)(auto ref T value, string key);
- Operator sets value for element of JSON object by keyIf JSON value is null, then operator initializes it with object and then sets value for it. Throws JSONException if type is not JSON_TYPE.OBJECT or JSON_TYPE.NULL.Examples:
JSONValue j = JSONValue( ["language": "D"] ); j["language"].str = "Perl"; assert( j["language"].str == "Perl" );
- int opApply(int delegate(size_t index, ref JSONValue) dg);
- int opApply(int delegate(string key, ref JSONValue) dg);
- const string toString();
- Implicitly calls toJSON on this JSONValue.
- const string toPrettyString();
- Implicitly calls toJSON on this JSONValue, like toString, butalso passes true as pretty argument.
- JSONValue parseJSON(T)(T json, int maxDepth = -1) if (isInputRange!T);
- Parses a serialized string and returns a tree of JSON values.
- string toJSON(in JSONValue* root, in bool pretty = false);
- Takes a tree of JSON values and returns the serialized string.Any Object types will be serialized in a key-sorted order. If pretty is false no whitespaces are generated. If pretty is true serialized string is formatted to be human-readable.
- class JSONException: object.Exception;
- Exception thrown on JSON errors