diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/CacheKeyJsonParser.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/CacheKeyJsonParser.java
index 01c7dbc..48f3bff 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/CacheKeyJsonParser.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/CacheKeyJsonParser.java
@@ -16,13 +16,14 @@
 
 import com.ericsson.gerrit.plugins.highavailability.cache.Constants;
 import com.google.common.base.Strings;
+import com.google.common.base.Supplier;
+import com.google.common.base.Suppliers;
 import com.google.gerrit.entities.Account;
 import com.google.gerrit.entities.AccountGroup;
 import com.google.gerrit.entities.Project;
 import com.google.gerrit.server.events.EventGson;
 import com.google.gson.Gson;
 import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 
@@ -37,39 +38,28 @@
 
   public Object fromJson(String cacheName, String jsonString) {
     JsonElement json = gson.fromJson(Strings.nullToEmpty(jsonString), JsonElement.class);
-    Object key;
+    Supplier<JsonElement> id = Suppliers.memoize(() -> json.getAsJsonObject().get("id"));
+    Supplier<JsonElement> uuid = Suppliers.memoize(() -> json.getAsJsonObject().get("uuid"));
+
     // Need to add a case for 'adv_bases'
-    if (!json.isJsonObject()) {
-      if (Constants.PROJECTS.equals(cacheName)) {
-        return Project.nameKey(json.getAsString());
-      }
-      return json.getAsString();
-    }
-    JsonObject asJsonObject = json.getAsJsonObject();
     switch (cacheName) {
       case Constants.ACCOUNTS:
-        key = asJsonObject.has("id") ? Account.id(asJsonObject.get("id").getAsInt()) : null;
-        break;
+        return id.get() == null ? null : Account.id(id.get().getAsInt());
       case Constants.GROUPS:
-        key = asJsonObject.has("id") ? AccountGroup.id(asJsonObject.get("id").getAsInt()) : null;
-        break;
+        return id.get() == null ? null : AccountGroup.id(id.get().getAsInt());
       case Constants.GROUPS_BYINCLUDE:
       case Constants.GROUPS_MEMBERS:
-        key =
-            asJsonObject.has("uuid")
-                ? AccountGroup.uuid(asJsonObject.get("uuid").getAsString())
-                : null;
-        break;
+        return uuid.get() == null ? null : AccountGroup.uuid(uuid.get().getAsString());
       case Constants.PROJECT_LIST:
-        key = gson.fromJson(json, Object.class);
-        break;
+        return gson.fromJson(json, Object.class);
+      case Constants.PROJECTS:
+        return Project.nameKey(json.getAsString());
       default:
         try {
-          key = gson.fromJson(json, String.class);
+          return gson.fromJson(json, String.class);
         } catch (Exception e) {
-          key = gson.fromJson(json, Object.class);
+          return gson.fromJson(json, Object.class);
         }
     }
-    return key;
   }
 }
