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

  • 2020-08-11
  • 浏览 (1782)

使用 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 类型的
0  赞