class_docstr: Base class used for create different types of operation ("atomized_operation"
  or others like ("knn", "rf")).
  Atomized_operation is pipeline which can be used like general operation.
class_docstr_tok: ["Base","class","used","for","create","different","types","of","operation","(","``","atomized_operation","''","or","others","like","(","``","knn","''",",","``","rf","''",")",")",".","Atomized_operation","is","pipeline","which","can","be","used","like","general","operation","."]
docstr: Check whether there are fields in the dictionary.
  :params operation_object: dictionary to check
  :params required_fields: list of fields name
docstr_tok: ["Check","whether","there","are","fields","in","the","dictionary",".",":","params","operation_object",":","dictionary","to","check",":","params","required_fields",":","list","of","fields","name"]
code: def _validate_json_operation_template(
      self, operation_object: dict, required_fields: list
  ):
      """
      Check whether there are fields in the dictionary.
      :params operation_object: dictionary to check
      :params required_fields: list of fields name
      """
  
      for field in required_fields:
          if field not in operation_object:
              message = f"Required field '{field}' is expected, but not found."
              self.log.error(message)
              raise RuntimeError(message)
  
imports: import os
  from abc import ABC, abstractmethod
  from io import BytesIO
  from typing import Any, Optional, Union
  import joblib
  import numpy
  from golem.core.log import default_log
  from fedot.core.pipelines.node import PipelineNode
label_desc: Use image node_id 5 for calling the OperationTemplateAbstract obj's underlying member method code with example usage: obj._validate_json_operation_template(operation_object, required_fields) without return types