2 回答
TA贡献1773条经验 获得超3个赞
对于 JSON,将数据解组为一个interface{}值。使用类型断言来确定值中的内容。
var v interface{}
err := json.Unmarshal(data, &v)
if err != nil {
// handle error
}
switch v := v.(type) {
case string:
fmt.Println("string:", v)
case float64:
fmt.Println("number:", v)
case []interface{}:
fmt.Println("array:", v)
case map[string]interface{}:
fmt.Println("object:", v)
case nil:
fmt.Println("nil")
}
TA贡献1865条经验 获得超7个赞
在 JSON 的情况下,json.Unmarshal如果您愿意,标准库函数将解组任意 JSON,如果您将指针传递给未初始化的空接口。(见这个例子。)
官方文档甚至说了这么多:
为了将 JSON 解组为接口值,Unmarshal 将其中一项存储在接口值中:
bool,用于 JSON 布尔值
float64,用于 JSON 数字
字符串,用于 JSON 字符串
[]interface{},用于 JSON 数组
map[string]interface{},用于 JSON 对象
无 JSON null
编辑:虽然没有记录,但yaml包也是如此;我在我的工作站上进行了测试,传入一个指向未初始化的空接口的指针会导致正确的数组、映射和原语的初始化。
- 2 回答
- 0 关注
- 243 浏览
添加回答
举报
