public static Pair<String, Map<String, String>> fromJson(String jsonString) throws JSONException {
    JSONObject jsonObject = new JSONObject(jsonString);
    String blobId = jsonObject.getString(BLOB_ID_FIELD);
    JSONObject metadataJson = jsonObject.optJSONObject(METADATA_FIELD);
    Map<String, String> metadata = new HashMap<>();
    if (metadataJson != null) {
      for (String key : metadataJson.keySet()) {
        metadata.put(key, metadataJson.getString(key));
      }
    }
    return new Pair<>(blobId, metadata);
  }
@param jsonString the JSON string to deserialize.
@return a {@link Pair} that contains the blob ID and additional metadata parsed from the JSON string.
@throws JSONException
ambry-frontend/src/main/java/com/github/ambry/frontend/SignedIdSerDe.java