• Golang 使用 JSON unmarshal 数字到 interface{} 数字变成 float64 类型(转)


    JSON unmarshal 数字到 interface{} 数字变成 float64 类型

    使用 Golang 解析 JSON 格式数据时,若以 interface{} 接收数字成员,则会按照下列规则进行解析,可见

    使用 Golang 对 JSON 结构进行解析(unmarshal)时,JSON 结构中的数字会被解析为 float64 类型:

        bool, for JSON booleans
     
        float64, for JSON numbers
     
        string, for JSON strings
     
        []interface{}, for JSON arrays
     
        map[string]interface{}, for JSON objects
     
        nil for JSON null
    

    如果要转换为整型,可用强制类型转换:

     int( a["id"].(float64) )  // 将 interface{} 类型的 “id” 键申明为 float64 类型,再转换为 int 型
    

    转自:Golang 使用 JSON unmarshal 数字到 interface{} 数字变成 float64 类型

    interface{} 转换成 int 的一个通用函数

    ​
    func GetInterfaceToInt(t1 interface{}) int {
    	var t2 int
    	switch t1.(type) {
    	case uint:
    		t2 = int(t1.(uint))
    		break
    	case int8:
    		t2 = int(t1.(int8))
    		break
    	case uint8:
    		t2 = int(t1.(uint8))
    		break
    	case int16:
    		t2 = int(t1.(int16))
    		break
    	case uint16:
    		t2 = int(t1.(uint16))
    		break
    	case int32:
    		t2 = int(t1.(int32))
    		break
    	case uint32:
    		t2 = int(t1.(uint32))
    		break
    	case int64:
    		t2 = int(t1.(int64))
    		break
    	case uint64:
    		t2 = int(t1.(uint64))
    		break
    	case float32:
    		t2 = int(t1.(float32))
    		break
    	case float64:
    		t2 = int(t1.(float64))
    		break
    	case string:
    		t2, _ = strconv.Atoi(t1.(string))
    		break
    	default:
    		t2 = t1.(int)
    		break
    	}
    	return t2
    }
    

    转自:go 中Interface{} 转int

  • 相关阅读:
    Centos8 yum 源不可用
    Docker 容器开启SSH
    kubernetes calico 启动异常,无法访问etcd
    JEEGC相关笔记
    JS 的加减乘除 bobo
    go gin 项目热部署
    C#命名规范
    go 的定时器
    golang gin的安装和引入
    《十分钟冥想》摘要
  • 原文地址:https://www.cnblogs.com/hi3254014978/p/16440301.html
Copyright © 2020-2023  润新知