Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
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.
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 (const(JSONValue)* code = "code" in j) { if (code.type() == JSON_TYPE.INTEGER) x = code.integer; else x = to!int(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 JSONFloatLiteral: string;
- String literals used to represent special float values within JSON strings.
- enum JSONOptions: int;
- Flags that control how json is encoded and parsed.
- enum JSON_TYPE: byte;
- JSON type enumeration
- struct JSONValue;
- JSON value node
- const pure nothrow @nogc @property @safe 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);
- inout pure @property inout(string) str();
pure nothrow @nogc @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 pure @property @safe inout(long) integer();
pure nothrow @nogc @property @safe long integer(long v); - Value getter/setter for JSON_TYPE.INTEGER.Throws:JSONException for read access if type is not JSON_TYPE.INTEGER.
- inout pure @property @safe inout(ulong) uinteger();
pure nothrow @nogc @property @safe ulong uinteger(ulong v); - Value getter/setter for JSON_TYPE.UINTEGER.Throws:JSONException for read access if type is not JSON_TYPE.UINTEGER.
- inout pure @property @safe inout(double) floating();
pure nothrow @nogc @property @safe double floating(double v); - Value getter/setter for JSON_TYPE.FLOAT.Throws:JSONException for read access if type is not JSON_TYPE.FLOAT.
- inout pure @property ref inout(JSONValue[string]) object();
pure nothrow @nogc @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 pure @property ref inout(JSONValue[]) array();
pure nothrow @nogc @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 pure nothrow @nogc @property @safe 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 pure 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 pure 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" );
- pure void opIndexAssign(T)(auto ref T value, string key);
- Operator sets value for element of JSON object by key.If 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" );
- const auto opBinaryRight(string op : "in")(string k);
- Support for the in operator.Tests wether a key can be found in an object.Returns:when found, the const(JSONValue)* that matches to the key, otherwise null.Throws:JSONException if the right hand side argument JSON_TYPE is not OBJECT.Examples:
JSONValue j = [ "language": "D", "author": "walter" ]; string a = ("author" in j).str;
- int opApply(int delegate(size_t index, ref JSONValue) dg);
- int opApply(int delegate(string key, ref JSONValue) dg);
- const string toString(in JSONOptions options = JSONOptions.none);
- Implicitly calls toJSON on this JSONValue.options can be used to tweak the conversion behavior.
- const string toPrettyString(in JSONOptions options = JSONOptions.none);
- Implicitly calls toJSON on this JSONValue, like toString, butalso passes true as pretty argument. options can be used to tweak the conversion behavior
- JSONValue parseJSON(T)(T json, int maxDepth = -1, JSONOptions options = JSONOptions.none) if (isInputRange!T);
- Parses a serialized string and returns a tree of JSON values.Throws:std.json.JSONException if the depth exceeds the max depth.Parameters:
T json json-formatted string to parse int maxDepth maximum depth of nesting allowed, -1 disables depth checking JSONOptions options enable decoding string representations of NaN/Inf as float values - JSONValue parseJSON(T)(T json, JSONOptions options) if (isInputRange!T);
- Parses a serialized string and returns a tree of JSON values.Throws:std.json.JSONException if the depth exceeds the max depth.Parameters:
T json json-formatted string to parse JSONOptions options enable decoding string representations of NaN/Inf as float values - string toJSON(in JSONValue* root, in bool pretty = false, in JSONOptions options = JSONOptions.none);
- 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. Set the flag is set in options to encode NaN/Infinity as strings.
- class JSONException: object.Exception;
- Exception thrown on JSON errors