# Parses a JSON Object
fun parse_json_object: Serializable do
var max = len
if pos >= max then return make_parse_error("Incomplete JSON object")
var obj = new JsonObject
var c = src[pos]
while not c == '}' do
ignore_whitespaces
if pos >= max then return make_parse_error("Malformed JSON object")
if src[pos] == '}' then break
var key = parse_entity
#print "Parsed key {key} for JSON object"
if not key isa String then return make_parse_error("Bad key format {key or else "null"}")
ignore_whitespaces
if pos >= max then return make_parse_error("Incomplete JSON object")
if not src[pos] == ':' then return make_parse_error("Bad key/value separator {src[pos]}")
pos += 1
ignore_whitespaces
var value = parse_entity
#print "Parsed value {value} for JSON object"
if value isa JsonParseError then return value
obj[key] = value
ignore_whitespaces
if pos >= max then return make_parse_error("Incomplete JSON object")
c = src[pos]
if c == '}' then break
if c != ',' then return make_parse_error("Bad object separator {src[pos]}")
pos += 1
end
pos += 1
return obj
end
lib/json/static.nit:238,2--269,4