docs: def _flatten_json(cls, metric_base, val, tags):
          """
          Recursively flattens the nginx json object. Returns the following: [(metric_name, value, tags)]
          """
          output = []
  
          if isinstance(val, dict):
              # Pull out the server as a tag instead of trying to read as a metric
              if 'server' in val and val['server']:
                  server = 'server:%s' % val.pop('server')
                  if tags is None:
                      tags = [server]
                  else:
                      tags = tags + [server]
              for key, val2 in iteritems(val):
                  if key in TAGGED_KEYS:
                      metric_name = '%s.%s' % (metric_base, TAGGED_KEYS[key])
                      for tag_val, data in iteritems(val2):
                          tag = '%s:%s' % (TAGGED_KEYS[key], tag_val)
                          output.extend(cls._flatten_json(metric_name, data, tags + [tag]))
                  else:
                      metric_name = '%s.%s' % (metric_base, key)
                      output.extend(cls._flatten_json(metric_name, val2, tags))
  
          elif isinstance(val, list):
              for val2 in val:
                  output.extend(cls._flatten_json(metric_base, val2, tags))
  
          elif isinstance(val, bool):
              output.append((metric_base, int(val), tags, 'gauge'))
  
          elif isinstance(val, (int, float, long)):
              output.append((metric_base, val, tags, 'gauge'))
  
          elif isinstance(val, (text_type, str)):
              if val[-1] == "Z":
                  try:
                      # In the new Plus API, timestamps are now formatted
                      # strings, some include microseconds, some don't...
                      timestamp = fromisoformat(val[:19])
                  except ValueError:
                      pass
                  else:
                      output.append((metric_base, int((timestamp - EPOCH).total_seconds()), tags, 'gauge'))
  
          return output