code: func convertToStringKeysRecursive(value interface{}, keyPrefix string) (interface{}, error) {
  	if mapping, ok := value.(map[interface{}]interface{}); ok {
  		dict := make(map[string]interface{})
  		for key, entry := range mapping {
  			str, ok := key.(string)
  			if !ok {
  				return nil, formatInvalidKeyError(keyPrefix, key)
  			}
  			var newKeyPrefix string
  			if keyPrefix == "" {
  				newKeyPrefix = str
  			} else {
  				newKeyPrefix = fmt.Sprintf("%s.%s", keyPrefix, str)
  			}
  			convertedEntry, err := convertToStringKeysRecursive(entry, newKeyPrefix)
  			if err != nil {
  				return nil, err
  			}
  			dict[str] = convertedEntry
  		}
  		return dict, nil
  	}
  	if list, ok := value.([]interface{}); ok {
  		var convertedList []interface{}
  		for index, entry := range list {
  			newKeyPrefix := fmt.Sprintf("%s[%d]", keyPrefix, index)
  			convertedEntry, err := convertToStringKeysRecursive(entry, newKeyPrefix)
  			if err != nil {
  				return nil, err
  			}
  			convertedList = append(convertedList, convertedEntry)
  		}
  		return convertedList, nil
  	}
  	return value, nil
  }
docs: // keys needs to be converted to strings for jsonschema