【GO】json转map、切片、结构体

简介: 【GO】json转map、切片、结构体

咔咔博客之json转map、切片、结构体

结构体转json

map转json

切片转json

在上面三个转json使用的是json_Marshal.也就是序列化的过程,那么反序列的函数json.Unmarshal()

json转map


image.png

/**
json转map
*/
func main3() {
  jsonStr := `{"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}`
  mMap := make(map[string]interface{})
  err := json.Unmarshal([]byte(jsonStr), &mMap)
  if err != nil {
    fmt.Println("反序列化失败")
  } else {
    // map[address:[fangkang.top blog.fangkang.top] age:20 name:咔咔]
    fmt.Println(mMap)
  }
}

屏幕快照 2022-05-18 下午11.13.04.png

func main() {
  jsonStr := `[
        {"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]},
        {"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]},
        {"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}
  ]`
  mSlice := make([]map[string]interface{}, 0)
  err := json.Unmarshal([]byte(jsonStr), &mSlice)
  fmt.Println(err)
  if err != nil {
    fmt.Println("反序列化失败")
  } else {
    // [map[address:[fangkang.top blog.fangkang.top] age:20 name:咔咔] map[address:[fangkang.top blog.fangkang.top] age:20 name:咔咔] map[address:[fangkang.top blog.fangkang.top] age:20 name:咔咔]]
    fmt.Println(mSlice)
  }
}

屏幕快照 2022-05-18 下午11.13.21.png

type Persons struct {
  Name    string
  Age     int
  Address []string
}
/**
json转结构体
*/
func main() {
  jsonStr := `{"name":"咔咔","age":20,"address":["fangkang.top","blog.fangkang.top"]}`
  k := Persons{}
  err := json.Unmarshal([]byte(jsonStr), &k)
  if err != nil {
    fmt.Println("反序列化失败")
  } else {
    fmt.Println(k)
  }
}

注意点

  • 在json转任何类型时都是传的指针
  • 使用json_Unmarshil来转json
  • json转切片注意每个值后边的逗号
  • json转结构体时注意结构体的属性必须是开放的,也就是首字符必须大写
相关文章
|
6天前
|
Go
Go to Learn Go之结构体
Go to Learn Go之结构体
24 5
|
6天前
|
Go 索引
Go to Learn Go之切片
Go to Learn Go之切片
13 1
|
9天前
|
Go 定位技术 索引
Go 语言Map(集合) | 19
Go 语言Map(集合) | 19
|
26天前
|
存储 Shell Go
Go语言结构体和元组全面解析
Go语言结构体和元组全面解析
|
1月前
|
JSON Go 数据格式
Golang语言结构体链式编程与JSON序列化
这篇文章是关于Go语言中结构体链式编程与JSON序列化的教程,详细介绍了JSON格式的基本概念、结构体的序列化与反序列化、结构体标签的使用以及如何实现链式编程。
24 4
|
8天前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
|
8天前
|
编译器 Go 索引
Go数组、多维数组和切片(动态数组),及常用函数len(),cap(),copy(),append()在切片中的使用
本文介绍了Go语言中数组、多维数组和切片(动态数组)的基本概念和操作,包括数组的定义、初始化、访问,多维数组的定义和访问,以及切片的创建、使用和扩容。同时,还讲解了切片中常用的函数len()、cap()、copy()和append()的使用方法。
|
2月前
|
存储 算法 Java
Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据
Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据
|
2月前
|
存储 安全 NoSQL
Go map 读写性能优化 - 分片 map
Go map 读写性能优化 - 分片 map
36 1
|
2月前
|
存储 缓存 Go
在 Go 中如何复制切片和映射?
【8月更文挑战第31天】
43 0
下一篇
无影云桌面