refactor sql_json view endpoint: separate validate the query concern into ad hod method (#16647)

diff --git a/superset/views/core.py b/superset/views/core.py
index 107d66e..b1ae698 100755
--- a/superset/views/core.py
+++ b/superset/views/core.py
@@ -2596,17 +2596,8 @@
         )
         query = execution_context.create_query()
         self._save_new_query(query, session)
-
         logger.info("Triggering query_id: %i", query.id)
-
-        try:
-            query.raise_for_access()
-        except SupersetSecurityException as ex:
-            query.set_extra_json_key("errors", [dataclasses.asdict(ex.error)])
-            query.status = QueryStatus.FAILED
-            query.error_message = ex.error.message
-            session.commit()
-            raise SupersetErrorException(ex.error, status=403) from ex
+        self._validate_access(query, session)
 
         try:
             template_processor = get_template_processor(
@@ -2677,6 +2668,18 @@
             session, rendered_query, query, expand_data, log_params
         )
 
+    def _validate_access(  # pylint: disable=no-self-use
+        self, query: Query, session: Session
+    ) -> None:
+        try:
+            query.raise_for_access()
+        except SupersetSecurityException as ex:
+            query.set_extra_json_key("errors", [dataclasses.asdict(ex.error)])
+            query.status = QueryStatus.FAILED
+            query.error_message = ex.error.message
+            session.commit()
+            raise SupersetErrorException(ex.error, status=403) from ex
+
     def _save_new_query(  # pylint: disable=no-self-use
         self, query: Query, session: Session
     ) -> None: