private static <T> Optional<T> readFromJson(JsonObject json, String name, JsonGetter<T> mapper) { return Optional.ofNullable(json.getAsJsonPrimitive(name)) .flatMap(jsonPrimitive -> Optional.of(mapper.extract(jsonPrimitive))); }