Json := Object clone do( squareBrackets := method( l := list() l appendProto(Json) call message arguments foreach(arg, l push(Json doMessage(arg)) ) l ) curlyBrackets := method( map := Map clone map appendProto(Json) map colon := method(key, value, cleanKey := key asMutable removePrefix("\"") removeSuffix("\"") self atPut(cleanKey,value) ) call message arguments foreach(arg, map doMessage(arg) ) map ) ) j := Json { "name": "alice", "job": "agent", "aliases": [ "tanya", "isla" ], "neste": [ "tanya", "isla" ] } k := Json [ {"name": "ted", "age": 22}, {"name": "sue", "age": 31} ] q := Json [ ["so", ["nested"]] ] j at("name") println j at("aliases") println k at(0) at("age") println q println