code: def log_summary_rows(self, rows, title, window_id):
      self.json_dictionary[title] = {}
      for i in range(len(rows)):
          row = rows[i]
          if isinstance(row[1], str):
              try:
                  row[1] = row[1].replace("%", "")
                  row[1] = float(row[1])
              except ValueError:
                  raise ValueError(
                      f'Unable to convert row value "{row[1]}" for Attack Result "{row[0]}" into float'
                  )
  
      for metric, summary in rows:
          self.json_dictionary[title][metric] = summary
  
      self._flushed = False
  
file_path: TextAttack/textattack/loggers/json_summary_logger.py
imports: import json
  from textattack.shared import logger
  from .logger import Logger
label_desc: Use image node_id 2 for calling the JsonSummaryLogger obj's underlying member method code with example usage: obj.log_summary_rows(rows, title, window_id) without return types