docs: def obj_to_json(self, file_path=None, indent=2, sort_keys=False,
                      quote_numbers=True):
          """
          This will return a str of a json list.
          :param file_path:      path to data file, defaults to
                                 self's contents if left alone
          :param indent:         int if set to 2 will indent to spaces and include
                                 line breaks.
          :param sort_keys:      sorts columns as oppose to column order.
          :param quote_numbers:  bool if True will quote numbers that are strings
          :return:               string representing the grid formation
                                 of the relevant data
          """
          data = [row.obj_to_ordered_dict(self.columns) for row in self]
  
          if not quote_numbers:
              for row in data:
                  for k, v in row.items():
                      if isinstance(v, (bool, int, float)):
                          row[k] = str(row[k])
          ret = json.dumps(data, indent=indent, sort_keys=sort_keys)
          if sys.version_info[0] == 2:
              ret = ret.replace(', \n', ',\n')
          self._save_file(file_path, ret)
          return ret