mirror of https://github.com/spf13/cast.git
feat(ToStringMapStringE): Add support for non string JOSN value
This commit is contained in:
parent
8d17101741
commit
4b1e5dfe94
|
@ -907,6 +907,8 @@ func TestToStringMapStringE(t *testing.T) {
|
||||||
var jsonString = `{"key 1": "value 1", "key 2": "value 2", "key 3": "value 3"}`
|
var jsonString = `{"key 1": "value 1", "key 2": "value 2", "key 3": "value 3"}`
|
||||||
var invalidJsonString = `{"key 1": "value 1", "key 2": "value 2", "key 3": "value 3"`
|
var invalidJsonString = `{"key 1": "value 1", "key 2": "value 2", "key 3": "value 3"`
|
||||||
var emptyString = ""
|
var emptyString = ""
|
||||||
|
var jsonStringWithNonString = `{"key 1": "100", "key 2": -200, "key 3": 3.1415926}`
|
||||||
|
var mapStringWithNonString = map[string]string{"key 1": "100", "key 2": "-200", "key 3": "3.1415926"}
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
input interface{}
|
input interface{}
|
||||||
|
@ -918,6 +920,7 @@ func TestToStringMapStringE(t *testing.T) {
|
||||||
{interfaceMapString, stringMapString, false},
|
{interfaceMapString, stringMapString, false},
|
||||||
{interfaceMapInterface, stringMapString, false},
|
{interfaceMapInterface, stringMapString, false},
|
||||||
{jsonString, stringMapString, false},
|
{jsonString, stringMapString, false},
|
||||||
|
{jsonStringWithNonString, mapStringWithNonString, false},
|
||||||
|
|
||||||
// errors
|
// errors
|
||||||
{nil, nil, true},
|
{nil, nil, true},
|
||||||
|
|
7
caste.go
7
caste.go
|
@ -874,8 +874,11 @@ func ToStringMapStringE(i interface{}) (map[string]string, error) {
|
||||||
}
|
}
|
||||||
return m, nil
|
return m, nil
|
||||||
case string:
|
case string:
|
||||||
err := jsonStringToObject(v, &m)
|
var temp = map[string]interface{}{}
|
||||||
return m, err
|
if err := jsonStringToObject(v, &temp); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return ToStringMapStringE(temp)
|
||||||
default:
|
default:
|
||||||
return m, fmt.Errorf("unable to cast %#v of type %T to map[string]string", i, i)
|
return m, fmt.Errorf("unable to cast %#v of type %T to map[string]string", i, i)
|
||||||
}
|
}
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -1,5 +1,7 @@
|
||||||
module github.com/spf13/cast
|
module github.com/spf13/cast
|
||||||
|
|
||||||
|
go 1.15
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
|
|
Loading…
Reference in New Issue