我正在开发将接收 JSON 的 Web 服务。Go 转换类型过于严格。
所以,我没有下面的函数转换interface{}中bool
func toBool(i1 interface{}) bool {
if i1 == nil {
return false
}
switch i2 := i1.(type) {
default:
return false
case bool:
return i2
case string:
return i2 == "true"
case int:
return i2 != 0
case *bool:
if i2 == nil {
return false
}
return *i2
case *string:
if i2 == nil {
return false
}
return *i2 == "true"
case *int:
if i2 == nil {
return false
}
return *i2 != 0
}
return false
}
我认为,功能还不够完善,我需要的功能转换interface{}中string,int,int64,等
所以我的问题:是否有库(函数集)Go可以转换interface{}为某些类型
更新
我的 Web 服务接收 JSON。我解码它,map[string]interface{}我无法控制那些编码它的人。
所以我收到的所有值都是interface{}并且我需要将它转换为某些类型的方法。
所以它可能是nil, int, float64, string, [...],{...}我希望把它转换成它应该是的样子。例如int, float64, string, []string,map[string]string处理所有可能的情况,包括nil, 错误值等
更新2
我收到{"s": "wow", "x":123,"y":true}, {"s": 123, "x":"123","y":"true"}, {a:["a123", "a234"]},{}
var m1 map[string]interface{}
json.Unmarshal(b, &m1)
s := toString(m1["s"])
x := toInt(m1["x"])
y := toBool(m1["y"])
arr := toStringArray(m1["a"])
胡子哥哥
相关分类