在 Golang 中,可以使用 interface{} 类型来表示任意类型的数据。如果你不确定一个 JSON 对象的类型,可以将其解码为 interface{} 类型,然后使用类型断言来确定其具体类型。

例如,假设有以下 JSON 字符串:

{
  "name": "Alice",
  "age": 30,
  "isMarried": true,
  "hobbies": ["reading", "hiking"]
}

我们可以使用以下代码将其解码为一个 interface{} 类型:

import (
    "encoding/json"
    "fmt"
)

func main() {
    jsonString := `{"name":"Alice","age":30,"isMarried":true,"hobbies":["reading","hiking"]}`
    
    var data interface{}
    err := json.Unmarshal([]byte(jsonString), &data)
    if err != nil {
        panic(err)
    }
    
    fmt.Println(data)
}

这将输出以下结果:

map[age:30 hobbies:[reading hiking] isMarried:true name:Alice]

现在,我们可以使用类型断言来确定具体的类型,例如:

if value, ok := data.(map[string]interface{}); ok {
    name := value["name"].(string)
    age := value["age"].(float64)
    isMarried := value["isMarried"].(bool)
    hobbies := value["hobbies"].([]interface{})
    
    fmt.Println("Name:", name)
    fmt.Println("Age:", age)
    fmt.Println("Is Married:", isMarried)
    fmt.Println("Hobbies:", hobbies)
}

这将输出以下结果:

Name: Alice
Age: 30
Is Married: true
Hobbies: [reading hiking]
``

原文地址: https://www.cveoy.top/t/topic/dn9V 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录