private static List<String> parseTopicsData(String jsonData) throws JsonMappingException {
        Optional<JsonValue> parsed = Json.parseFull(jsonData);
        if (parsed.isPresent()) {
            JsonValue js = parsed.get();
            Optional<JsonValue> version = js.asJsonObject().get("version");
            return parseTopicsData(version.isPresent() ? version.get().to(INT) : EARLIEST_TOPICS_JSON_VERSION, js);
        } else {
            throw new AdminOperationException("The input string is not a valid JSON");
        }
    }
The entry point for the --cancel command.

@param adminClient           The AdminClient to use.
@param jsonString            The JSON string to use for the topics and partitions to cancel.
@param preserveThrottles     True if we should avoid changing topic or broker throttles.
@param timeoutMs             The maximum time in ms to wait for log directory
                             replica assignment to begin.
@param time                  The Time object to use.

@return                      A tuple of the partition reassignments that were cancelled,
                             and the replica movements that were cancelled.
tools/src/main/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommand.java