Golang 解析 JSON , 用 interface{} 接收后的字段类型

2020-08-11 浏览 (2182)

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

解析规则

    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

可以看出,所有的 num 类型的数据都会被解析成 float64

解析函数

func JsonToMap(jsonStr string) map[string]interface{} {
	var mapResult map[string]interface{}
	err := json.Unmarshal([]byte(jsonStr), &mapResult)
	if err != nil {
		fmt.Println("JsonToMap err: ", err)
	}
	return mapResult
}

解决方法

如果类型是 int ,可以用下面的方式转换,其它同理。

data := JsonToMap(jsonStr)
a := int(data["a"].(float64)) // a的值本来是 int 类型的
  • 所属分类: 后端技术
  • 本文标签: golang
  • 版权声明: 本文链接 https://seaxiang.com/blog/Zz6zEj