The `json()` function parses the given string value as JSON. Throws an exception if the given input value is not a string. Throws an exception if the given input string cannot be parsed as JSON. Returns the resulting value. -- Testcase -- {% print(join("\n", [ json("null"), json("true"), json("false"), json("123"), json("456.7890000"), json("-1.4E10"), json("1e309"), json('"A string \u2600"'), json("[ 1, 2, 3 ]"), json('{ "test": [ 1, 2, 3 ] }'), // surrounding white space is ignored json(' [ 1, 2, 3 ] ') ]), "\n"); %} -- End -- -- Expect stdout -- null true false 123 456.789 -1.4e+10 Infinity A string ☀ [ 1, 2, 3 ] { "test": [ 1, 2, 3 ] } [ 1, 2, 3 ] -- End -- Passing a non-string value throws an exception. -- Testcase -- {% json(true); %} -- End -- -- Expect stderr -- Type error: Passed value is not a string In line 2, byte 11: ` json(true);` Near here ---^ -- End -- Unparseable JSON throws exceptions. -- Testcase -- {% json('[ "incomplete", "array" '); %} -- End -- -- Expect stderr -- Syntax error: Failed to parse JSON string: unexpected end of data In line 2, byte 33: ` json('[ "incomplete", "array" ');` Near here -------------------------^ -- End -- -- Testcase -- {% json('invalid syntax'); %} -- End -- -- Expect stderr -- Syntax error: Failed to parse JSON string: unexpected character In line 2, byte 23: ` json('invalid syntax');` Near here ---------------^ -- End -- -- Testcase -- {% json('[] trailing garbage'); %} -- End -- -- Expect stderr -- Syntax error: Trailing garbage after JSON data In line 2, byte 28: ` json('[] trailing garbage');` Near here --------------------^ -- End --