core :: Text :: parse_json
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"
# 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