refactor JSONParser to interface, make a DefaultJSONParser