Go 基本JSON解码
示例
json.Unmarshal包中"encoding/json"的JSON解码为给定变量指向的JSON值。
参数是要解码的值[]bytes,是用作反序列化值的存储的变量。返回的值是一个错误(失败时)。
encodedValue := []byte(`{"London":18,"Rome":30}`)
//解码JSON的通用存储
var data map[string]interface{}
//将值解码为数据
// notice that we must pass the pointer to data using &data
err := json.Unmarshal(encodedValue, &data)
//检查解码是否成功
if err != nil {
panic(err)
}
fmt.Println(data)
map[London:18 Rome:30]操场
请注意,在上面的示例中,我们如何预先知道键的类型和值。但这并非总是如此。实际上,在大多数情况下,JSON包含混合值类型。
encodedValue := []byte(`{"city":"Rome","temperature":30}`)
//解码JSON的通用存储
var data map[string]interface{}
//将值解码为数据
if err := json.Unmarshal(encodedValue, &data); err != nil {
panic(err)
}
//如果您想使用特定的值类型,我们需要将其强制转换
temp := data["temperature"].(float64)
fmt.Println(temp) //30
city := data["city"].(string)
fmt.Println(city) // "Rome"操场
在上面的最后一个示例中,我们使用了通用映射来存储解码后的值。我们必须使用a,map[string]interface{}因为我们知道键是字符串,但是我们事先不知道它们的值的类型。
这是一个非常简单的方法,但是它也非常有限。在现实世界中,通常会将JSON解码为自定义struct类型。
热门推荐
10 朋友新年祝福语大全 简短
11 新年祝福语简短大方兔年
12 搬新家礼物祝福语简短
13 同学见面花束祝福语简短
14 五一假期祝福语幽默简短
15 离职欢送敬酒祝福语简短
16 对学弟的祝福语简短
17 考老师辞职祝福语简短
18 祝福语驱散霉运的话简短