code: def json(
              klass,
              map=None,
              allow_404=True,
              one=False,
              decode=False,
              is_id=False,
              index=False):
          
          def cb(response):
              CB._status(response, allow_404=allow_404)
              if response.code == 404:
                  return response.headers['X-Consul-Index'], None
  
              data = json.loads(response.body)
  
              if decode:
                  for item in data:
                      if item.get(decode) is not None:
                          item[decode] = base64.b64decode(item[decode])
              if is_id:
                  data = data['ID']
              if one:
                  if data == []:
                      data = None
                  if data is not None:
                      data = data[0]
              if map:
                  data = map(data)
              if index:
                  return response.headers['X-Consul-Index'], data
              return data
          return cb
docs: *map* is a function to apply to the final result.
  
          *allow_404* if set, None will be returned on 404, instead of raising
          NotFound.
  
          *index* if set, a tuple of index, data will be returned.
  
          *one* returns only the first item of the list of items. empty lists are
          coerced to None.
  
          *decode* if specified this key will be base64 decoded.
  
          *is_id* only the 'ID' field of the json object will be returned.