Golang json的反序列化

介绍

  json反序列化是指将json字符串反序列化成对应的数据类型(比如结构体、map、切片)的操作

1.反序列换结构体

复制代码
package main

import (
    "encoding/json"
    "fmt"
)

//定义一个结构体
type Monster struct {
    Name     string
    Age      int
    Birthday string
    Sal      float64
    Skill    string
}

//将json字符串反序列化成struct
func unmarshalStruct() {
    str := "{\"Name\":\"牛魔王\",\"Age\":500,\"Birthday\":\"2021-11-11\",\"Sal\":80000,\"Skill\":\"牛魔拳\"}"
    //定义一个Monster结构体的实例
    var monster Monster
    err := json.Unmarshal([]byte(str), &monster)
    if err != nil {
        fmt.Printf("unmarshal err=%v", err)
    }
    fmt.Printf("反序列化后 monster=%v", monster)
}

func main() {
    //演示结构体反序列化
    unmarshalStruct()
}
复制代码

2.反序列化Map

复制代码
package main

import (
    "encoding/json"
    "fmt"
)

//将json反序列化成map
func unmarshalMap() {
    str := "{\"address\":\"洪崖洞\",\"age\":30,\"name\":\"红孩儿\"}"
    //定义一个map
    var a map[string]interface{}
    //反序列化
    //注意:反序列化map,不需要make,因为make操作被封装到Unmarshal函数
    err := json.Unmarshal([]byte(str), &a)
    if err != nil {

        fmt.Printf("unmarshal err=%v\n", err)
    }
    fmt.Printf("反序列化后 a=%v\n", a)
}

func main() {
    unmarshalMap()
}
复制代码

 

 3.反序列化slice

复制代码
package main

import (
    "encoding/json"
    "fmt"
)

//将json反序列化成切片
func unmarshalSlice() {
    str := "[{\"address\":\"beijiang\",\"age\":7,\"name\":\"jack\"},{\"address\":[\"shanghai\",\"xiaweiyi\"],\"age\":20,\"name\":\"tom\"}]"

    //定义一个slice
    var slice []map[string]interface{}
    //反序列化,不需要make,因为make操作被封装到Unmarshal函数
    err := json.Unmarshal([]byte(str), &slice)
    if err != nil {
        fmt.Printf("unmarshal err=%v\n", err)
    }
    fmt.Printf("反序列化后 slice=%v\n", slice)
}

func main() {
    unmarshalSlice()
}
复制代码

 

posted @   创客未来  阅读(492)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示