Parse self as JSON.

If self is not a valid JSON document or contains an unsupported escape sequence, return a JSONParseError.

Example with JsonObject:

var obj = "\{\"foo\": \{\"bar\": true, \"goo\": [1, 2, 3]\}\}".parse_json
assert obj isa JsonObject
assert obj["foo"] isa JsonObject
assert obj["foo"].as(JsonObject)["bar"] == true

Example with JsonArray:

var arr = "[1, 2, 3]".parse_json
assert arr isa JsonArray
assert arr.length == 3
assert arr.first == 1
assert arr.last == 3

Example with String:

var str = "\"foo, bar, baz\"".parse_json
assert str isa String
assert str == "foo, bar, baz"

Example of a syntax error:

var error = "\{foo: \"bar\"\}".parse_json
assert error isa JsonParseError
assert error.to_s == "Bad key format Error: bad JSON entity"

Property definitions

json :: static $ Text :: parse_json
	# Parse `self` as JSON.
	#
	# If `self` is not a valid JSON document or contains an unsupported escape
	# sequence, return a `JSONParseError`.
	#
	# Example with `JsonObject`:
	#
	#     var obj = "\{\"foo\": \{\"bar\": true, \"goo\": [1, 2, 3]\}\}".parse_json
	#     assert obj isa JsonObject
	#     assert obj["foo"] isa JsonObject
	#     assert obj["foo"].as(JsonObject)["bar"] == true
	#
	# Example with `JsonArray`:
	#
	#     var arr = "[1, 2, 3]".parse_json
	#     assert arr isa JsonArray
	#     assert arr.length == 3
	#     assert arr.first == 1
	#     assert arr.last == 3
	#
	# Example with `String`:
	#
	#     var str = "\"foo, bar, baz\"".parse_json
	#     assert str isa String
	#     assert str == "foo, bar, baz"
	#
	# Example of a syntax error:
	#
	#     var error = "\{foo: \"bar\"\}".parse_json
	#     assert error isa JsonParseError
	#     assert error.to_s == "Bad key format Error: bad JSON entity"
	fun parse_json: nullable Serializable do return (new JSONStringParser(self.to_s)).parse_entity
lib/json/static.nit:93,2--124,95