为了账号安全,请及时绑定邮箱和手机立即绑定

将接口{}转换为特定类型

将接口{}转换为特定类型

Go
开心每一天1111 2021-07-05 12:09:24
我正在开发将接收 JSON 的 Web 服务。Go 转换类型过于严格。所以,我没有下面的函数转换interface{}中boolfunc 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"])
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

快速/最佳方式是在时间执行中“投射”(如果您知道对象):


例如


package main    

import "fmt"    

func main() {

    var inter (interface{})

    inter = "hello"

    var value string

    value = inter.(string)

    fmt.Println(value)

}


查看完整回答
反对 回复 2021-07-19
  • 2 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信