code: def flatten_params(self, data, base_key=None):
          
          result = {}
  
          if data is None:
              return result
  
          map_data = None
          if not isinstance(data, collections.Mapping):
              map_data = []
              for idx, val in enumerate(data):
                  map_data.append([str(idx), val])
          else:
              map_data = list(data.items())
  
          for key, value in map_data:
              if not base_key is None:
                  key = base_key + "[" + key + "]"
  
              if isinstance(value, basestring) or not hasattr(value, "__iter__"):
                  result[key] = value
              else:
                  result.update(self.flatten_params(value, key))
  
          return result
docs: Flatten out nested arrays and dicts in query params into correct format