code: func ParseKey(data map[string]interface{}, key string, t string) error {
  	val, ok := data[key]
  	if !ok {
  		return errors.New("lack of key")
  	}
  
  	switch t {
  	case "string":
  		_, ok = val.(string)
  	case "int":
  		_, ok = val.(int)
  	case "map":
  		_, ok = val.(map[string]interface{})
  	case "list":
  		_, ok = val.([]interface{})
  	default:
  		panic("invalid type")
  	}
  
  	if !ok {
  		return errors.New("invalid key type")
  	}
  
  	return nil
  }
docs: // ParseKey parses the key in dict data. `t` is type of the keyed value.
  // It's one of "int", "string", "map", "list".