
离线 TA的专栏
- 打卡等级:热心大叔
- 打卡总天数:220
- 打卡月天数:0
- 打卡总奖励:3421
- 最近打卡:2025-08-22 03:51:59
|
目录
- 一: 简单的进行编解码
- 二:成员变量不可导出
- 三:解析成固定字段
- 四:嵌套导出
- 五:指针变量
一: 简单的进行编解码
- package main
- import (
- "encoding/json"
- "fmt"
- )
- type Person struct {
- Name string
- Age int
- Job string
- }
- func main() {
- // 数据--->Json
- p := &Person{
- Name: "shanwen",
- Age: 23,
- Job: "engineer",
- }
- // Marshal返回的结果是字节数组
- pByte, err := json.Marshal(p)
- if err != nil {
- fmt.Println("json marshal error!!!")
- }
- // 字节数组需要转成字符串
- fmt.Println(string(pByte))
- // {"Name":"shanwen","Age":23,"Job":"engineer"}
- pOut := Person{}
- err = json.Unmarshal(pByte, &pOut)
- if err != nil {
- fmt.Println(err)
- }
- fmt.Printf("pOunt Name is %s Age is %d Job is %s\n", pOut.Name, pOut.Age, pOut.Job)
- // pOunt Name is shanwen Age is 23 Job is engineer
- }
复制代码 二:成员变量不可导出
- package main
- import (
- "encoding/json"
- "fmt"
- )
- type Person2 struct {
- name string // 测试成员变量导出
- Age int
- Job string
- }
- func main() {
- // 数据--->Json
- p := &Person2{
- name: "shanwen",
- Age: 23,
- Job: "engineer",
- }
- // Marshal返回的结果是字节数组
- pByte, err := json.Marshal(p)
- if err != nil {
- fmt.Println("json marshal error!!!")
- }
- // 字节数组需要转成字符串
- fmt.Println(string(pByte))
- // {"Age":23,"Job":"engineer"} // 不会导出name字段
- }
复制代码 三:解析成固定字段
- package main
- import (
- "encoding/json"
- "fmt"
- )
- type Person3 struct {
- Name string `json:"user_name"` // 测试导出固定字段
- Age int
- Job string
- }
- func main() {
- // 数据--->Json
- p := &Person3{
- Name: "shanwen",
- Age: 23,
- Job: "engineer",
- }
- // Marshal返回的结果是字节数组
- pByte, err := json.Marshal(p)
- if err != nil {
- fmt.Println("json marshal error!!!")
- }
- // 字节数组需要转成字符串
- fmt.Println(string(pByte))
- // {"user_name":"shanwen","Age":23,"Job":"engineer"} // name解析成user_name了
- }
复制代码 四:嵌套导出
- package main
- import (
- "encoding/json"
- "fmt"
- )
- type Person4 struct {
- Name string `json:"user_name"`
- Age int
- Job string
- }
- type Man struct {
- Person Person4
- IsMan bool
- }
- func main() {
- // 数据--->Json
- m := Man{
- IsMan: true,
- }
- m.Person.Name = "shanwen"
- m.Person.Job = "engineer"
- m.Person.Age = 23
- // Marshal返回的结果是字节数组
- pByte, err := json.Marshal(m)
- if err != nil {
- fmt.Println("json marshal error!!!")
- }
- // 字节数组需要转成字符串
- fmt.Println(string(pByte))
- // {"Person":{"user_name":"shanwen","Age":23,"Job":"engineer"},"IsMan":true} // 复合结构转换
- }
复制代码 五:指针变量
指针变量,编码时自动转换为它所指向的值。 - package main
- import (
- "encoding/json"
- "fmt"
- )
- type Person4 struct {
- Name string `json:"user_name"`
- Age int
- Job string
- }
- type Man struct {
- Person *Person4
- IsMan bool
- }
- func main() {
- // 数据--->Json
- p := new(Person4)
- p.Name = "shanwen"
- p.Job = "engineer"
- p.Age = 23
- m := Man{
- IsMan: true,
- }
- // 指针变量
- m.Person = p
- // Marshal返回的结果是字节数组
- pByte, err := json.Marshal(m)
- if err != nil {
- fmt.Println("json marshal error!!!")
- }
- // 字节数组需要转成字符串
- fmt.Println(string(pByte))
- // {"Person":{"user_name":"shanwen","Age":23,"Job":"engineer"},"IsMan":true} // 复合结构转换
- }
复制代码以上就是Go语言JSON编解码神器之marshal的运用的详细内容,更多关于go marshal的资料请关注晓枫资讯其它相关文章!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:  进行删除处理。
4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
|