@Override public String determineTypeFor(String formatType, Object o) { EJValue jsonValue = (EJValue) o; if (jsonValue.isObject() != null) { EJObject jsonObject = jsonValue.isObject(); if (jsonObject.containsKey(SerializationParts.ENCODED_TYPE)) { return jsonObject.get(SerializationParts.ENCODED_TYPE).isString().stringValue(); } else { return Map.class.getName(); } } else if (jsonValue.isString() != null) { return String.class.getName(); } else if (jsonValue.isNumber() != null) { return Double.class.getName(); } else if (jsonValue.isBoolean() != null) { return Boolean.class.getName(); } else if (jsonValue.isArray() != null) { return List.class.getName(); } else if (jsonValue.isNull()) { return null; } throw new RuntimeException( "unknown type: cannot reverse map value to concrete Java type: " + o); }