@Override public ClusterCreateRequest deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException { JsonObject jsonObj = json.getAsJsonObject(); return ClusterCreateRequest.builder() .setName(context.<String>deserialize(jsonObj.get("name"), String.class)) .setDescription(context.<String>deserialize(jsonObj.get("description"), String.class)) .setClusterTemplateName(context.<String>deserialize(jsonObj.get("clusterTemplate"), String.class)) .setNumMachines(context.<Integer>deserialize(jsonObj.get("numMachines"), Integer.class)) .setProviderName(context.<String>deserialize(jsonObj.get("provider"), String.class)) .setHardwareTypeName(context.<String>deserialize(jsonObj.get("hardwaretype"), String.class)) .setImageTypeName(context.<String>deserialize(jsonObj.get("imagetype"), String.class)) .setInitialLeaseDuration(context.<Long>deserialize(jsonObj.get("initialLeaseDuration"), Long.class)) .setDNSSuffix(context.<String>deserialize(jsonObj.get("dnsSuffix"), String.class)) .setConfig(context.<JsonObject>deserialize(jsonObj.get("config"), JsonObject.class)) .setServiceNames(context.<Set<String>>deserialize( jsonObj.get("services"), new TypeToken<Set<String>>() { }.getType())) .setProviderFields(context.<Map<String, Object>>deserialize( jsonObj.get("providerFields"), new TypeToken<Map<String, Object>>() { }.getType())) .build(); } }