分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

Go之json数据

发布时间:2023-09-06 02:31责任编辑:彭小芳关键词:jsjson

json是一种轻量级的数据交换格式,有限提高数据在网络中的传输效率,易于阅读和编写数据,且易于生成key-value格式数据。

一:json数据的序列化举例

package mainimport ("fmt""encoding/json")//结构体变量序列化type Personal struct{Name stringAge intHobby string}func StructJson() {personal := Personal{Name : "louis",Age : 18,Hobby : "it",}//json.Marshal返回[]byte与errpersonal_json, _:= json.Marshal(personal)//由于personal_json是[]byte数据类型,故要通过string()函数转换fmt.Printf("personal_json=%v\n", string(personal_json))}//map数据序列化func MapJson(){m := map[string]interface{}{"Address":"深圳","Phone":"12345678911","Salary":10000,}map_json, _ := json.Marshal(m)fmt.Printf("map_json=%v\n", string(map_json))}//切片序列化func SliceJson(){s := []int{1,2,3,4,5,6,7,8}slice_json, _ := json.Marshal(s)fmt.Printf("slice_json=%v\n", string(slice_json))}//基本数据类型序列化func Base() {str := "string"base_json, _ := json.Marshal(str)fmt.Printf("base_json=%v\n", string(base_json))}func main() {StructJson()MapJson()SliceJson()Base()}结果[ `go run json.go` | done ]personal_json={"Name":"louis","Age":18,"Hobby":"it"}map_json={"Address":"深圳","Phone":"12345678911","Salary":10000}slice_json=[1,2,3,4,5,6,7,8]base_json="string"

 二:json反序列化

package mainimport ("fmt""encoding/json")//结构体变量序列化type Personal struct{Name stringAge intHobby string}func StructJson() {personal := Personal{Name : "louis",Age : 18,Hobby : "it",}//json.Marshal返回[]byte与errpersonal_json, _:= json.Marshal(personal)//由于personal_json是[]byte数据类型,故要通过string()函数转换fmt.Printf("personal_json=%v\n", string(personal_json))var personal_data Personal//接受的变量必须为指针类型err := json.Unmarshal([]byte(personal_json), &personal_data)if err != nil {fmt.Printf("反序列化错误:%v\n", err)}fmt.Printf("personal_json反序列化=%v\n", personal_data)}func main() {StructJson()}结果[ `go run json.go` | done ]personal_json={"Name":"louis","Age":18,"Hobby":"it"}personal_json反序列化={louis 18 it}

 三:结构体的序列化的反射机制

当结构体定义的字段为大写字母开头,但客户端希望接受到的都是小写字母的字段时,可以使用反射机制

package mainimport ("fmt""encoding/json")//结构体变量序列化type Personal struct{Name string `json:"name"`Age int `json:"age"`Hobby string `json:"hobby_data"`}func StructJson() {personal := Personal{Name : "louis",Age : 18,Hobby : "it",}personal_json, _:= json.Marshal(personal)fmt.Printf("personal_json=%v\n", string(personal_json))}func main() {StructJson()}结果[ `go run json.go` | done ]personal_json={"name":"louis","age":18,"hobby_data":"it"}

Go之json数据

原文地址:https://www.cnblogs.com/louis181214/p/10317581.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved