表示我要把相关的字段编码进结构体中
Struct tag “-” 表示跳过指定的 filed:
package main
import (
"encoding/json"
"fmt"
)
// Message TODO
type Message struct {
Name string `json:"some_field"`
Body string `json:"-"`
Time int64
}
func main() {
m := Message{"Alice", "Hello", 234234234}
b, err := json.Marshal(m)
if err != nil {
fmt.Println("生成json字符串错误")
}
var a string = string(b)
fmt.Printf("%s", a)
}
输出
{"some_field":"Alice","Time":234234234}
package main
import (
"encoding/json"
"fmt"
)
// Stu TODO
type Stu struct {
Name string `json:"name"`
Age int
HIgh bool
sex string
Class *Class `json:"class"`
}
// Class TODO
type Class struct {
Name string
Grade int
}
func main() {
// 实例化一个数据结构,用于生成json字符串
stu := Stu{
Name: "张三",
Age: 18,
HIgh: true,
sex: "男",
}
// 指针变量
cla := new(Class)
cla.Name = "1班"
cla.Grade = 3
stu.Class = cla
// Marshal失败时err!=nil
jsonStu, err := json.Marshal(stu)
if err != nil {
fmt.Println("生成json字符串错误")
}
// jsonStu是[]byte类型,转化成string类型便于查看
fmt.Println(string(jsonStu))
}
输出结果:
{"name":"张三","Age":18,"HIgh":true,"class":{"Name":"1班","Grade":3}}
package main
import (
"encoding/json"
"fmt"
)
// StuRead TODO
type StuRead struct {
Name interface{} `json:"name"`
Age interface{}
HIgh interface{}
sex interface{}
Class interface{} `json:"class"`
Test interface{}
}
// Class TODO
type Class struct {
Name string
Grade int
}
func main() {
// json字符中的"引号,需用\进行转义,否则编译出错
// json字符串沿用上面的结果,但对key进行了大小的修改,并添加了sex数据
data := "{\"name\":\"张三\",\"Age\":18,\"high\":true,\"sex\":\"男\",\"CLASS\":{\"naME\":\"1班\",\"GradE\":3}}"
str := []byte(data)
// 1.Unmarshal的第一个参数是json字符串,第二个参数是接受json解析的数据结构。
// 第二个参数必须是指针,否则无法接收解析的数据,如stu仍为空对象StuRead{}
// 2.可以直接stu:=new(StuRead),此时的stu自身就是指针
stu := StuRead{}
err := json.Unmarshal(str, &stu)
// 解析失败会报错,如json字符串格式不对,缺"号,缺}等。
if err != nil {
fmt.Println(err)
}
fmt.Println(stu)
}
输出结果
{张三 18 true 男 map[GradE:3 naME:1班] <nil>}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有