您的位置:首页 > 文旅 > 美景 > 安阳县二中录取分数线2022_网页相册制作_seo网站优化培训找哪些_百度手机助手下载

安阳县二中录取分数线2022_网页相册制作_seo网站优化培训找哪些_百度手机助手下载

2025/4/25 9:31:00 来源:https://blog.csdn.net/shanshui521/article/details/147235274  浏览:    关键词:安阳县二中录取分数线2022_网页相册制作_seo网站优化培训找哪些_百度手机助手下载
安阳县二中录取分数线2022_网页相册制作_seo网站优化培训找哪些_百度手机助手下载

第十章 json操作

文章目录

  • 第十章 json操作
    • 一、Marshal 序列化
    • 二、Unmarshal 反序列化
      • 1 已知数据解析
      • 2 未知数据解析
      • 3 json测试

一、Marshal 序列化

package mainimport ("encoding/json""fmt"
)
type Animal struct {Name  string `json:"name"`Order string `json:"order"`
}
func main() {var animals []Animalanimals = append(animals, Animal{Name: "Platypus", Order: "Monotremata"})animals = append(animals, Animal{Name: "Quoll", Order: "Dasyuromorphia"})jsonStr, err := json.Marshal(animals)  // 也就是将可以转化成json的数据,进行json转换if err != nil {fmt.Println("error:", err)}fmt.Println(string(jsonStr))  // [{"name":"Platypus","order":"Monotremata"},{"name":"Quoll","order":"Dasyuromorphia"}]
}

不写tag也可以,使用tag起一个别名也好⛱️。

二、Unmarshal 反序列化

1 已知数据解析

package mainimport ("encoding/json""fmt"
)
type Animal struct {Name  stringOrder string
}
func main() {var jsonBlob = []byte(`[{"Name": "Platypus", "Order": "Monotremata"},{"Name": "Quoll",    "Order": "Dasyuromorphia"}]`)var animals []Animalerr := json.Unmarshal(jsonBlob, &animals)if err != nil {fmt.Println("error:", err)}fmt.Printf("%+v", animals)
}

2 未知数据解析

var f interface{}
b := []byte(`{"Name":"Wednesday","Age":6,"Parents":["Gomez","Morticia"]}`)json.Unmarshal(b, &f)for k, v := range f.(map[string]interface{}) {switch vv := v.(type) {case string:fmt.Println(k, "is string", vv)case int:fmt.Println(k, "is int ", vv)case float64:fmt.Println(k, "is float64 ", vv)case []interface{}:fmt.Println(k, "is array:")for i, j := range vv {fmt.Println(i, j)}}
}

3 json测试

package mainimport ("encoding/json""fmt"
)type Base struct {Name  string   `json:"name"`Age   int      `json:"age"`Hobby []string `json:"hobby"`
}type Person struct {BaseInfo BaseID       string
}func main() {person := Person{BaseInfo: Base{"yangyi", 18, []string{"sing", "song"}}, ID: "123456789"}// 1 转化成json字符串jsonStr, err := json.Marshal(person)if err != nil {fmt.Println("json转换成功...")}fmt.Println(string(jsonStr))  // {"BaseInfo":{"Name":"yangyi","Age":18,"Hobby":["sing","song"]},"ID":"123456789"}// 2 json字符串反解析var person1 Personerr = json.Unmarshal(jsonStr, &person1)if err != nil {fmt.Println("json字符串解析失败...")}fmt.Printf("%T\n", person1)  // main.Personfmt.Println(person1.BaseInfo.Hobby)  // [sing song]
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com