code: func toStringMap(val interface{}) interface{} {
  	switch actual := val.(type) {
  	case map[interface{}]interface{}:
  		m := make(map[string]interface{})
  		for k, v := range actual {
  			m[toString(k)] = toStringMap(v)
  		}
  		return m
  	case []interface{}:
  		mapSlice := make([]interface{}, len(actual))
  		for i, e := range actual {
  			mapSlice[i] = toStringMap(e)
  		}
  		return mapSlice
  	default:
  		return actual
  	}
  }
docs: // toStringMap converts map[interface{}]interface{} to a map[string]interface{} when possible.