/** * Deserializes an object. * * @param json that should be serialized * @return the deserialized object */ @SuppressWarnings("unchecked") default T deserialize(JSONObject json) { if (JsonSerializables.isJsonNull(json)) return null; try { final Class<?> classTag = JsonSerializables.getClassTag(json); if (classTag == null) { throw new IllegalArgumentException(String.format("Cannot determine class from %s.", json)); } return this.deserialize(json, (Class<? extends T>) classTag); } catch (ClassNotFoundException e) { throw new SerializationException("Could not load class.", e); } }