chore: optimize yaml unmarshaler (#1513)

This commit is contained in:
chenquan
2022-02-09 02:57:00 -06:00
committed by GitHub
parent 9c2c90e533
commit 05cc62f5ff
2 changed files with 17 additions and 9 deletions

View File

@@ -3,10 +3,8 @@ package mapping
import (
"encoding/json"
"errors"
"io"
"io/ioutil"
"gopkg.in/yaml.v2"
"io"
)
// To make .json & .yaml consistent, we just use json as the tag key.
@@ -43,12 +41,18 @@ func unmarshalYamlBytes(content []byte, v interface{}, unmarshaler *Unmarshaler)
}
func unmarshalYamlReader(reader io.Reader, v interface{}, unmarshaler *Unmarshaler) error {
content, err := ioutil.ReadAll(reader)
if err != nil {
var res interface{}
if err := yaml.NewDecoder(reader).Decode(&res); err != nil {
return err
}
return unmarshalYamlBytes(content, v, unmarshaler)
out := cleanupMapValue(res)
if m, ok := out.(map[string]interface{}); ok {
return unmarshaler.Unmarshal(m, v)
}
return ErrUnsupportedType
}
// yamlUnmarshal YAML to map[string]interface{} instead of map[interface{}]interface{}.