【GO】json文件解码为map和结构体

简介: 【GO】json文件解码为map和结构体

咔咔博客之json文件解码为map和结构体

【GO】50 编码map为json文件说了map转json文件

案例:json转为map

image.png

package main
import (
  "encoding/json"
  "fmt"
  "os"
)
/**
json解码为go
*/
func main() {
  file, e := os.OpenFile("d:/kaka.json", os.O_RDONLY, 0666)
  if e != nil {
    fmt.Println("文件打开失败")
  } else {
    fmt.Println("json文件打开成功")
  }
  // 文件挂起执行完关闭文件
  defer file.Close()
  // 创建解码器
  decoder := json.NewDecoder(file)
  mMap := make(map[string]interface{})
  e = decoder.Decode(&mMap)
  fmt.Println(e)
  if e != nil {
    fmt.Println("文件解码失败")
  } else {
    // 文件解码成功 map[like:[撸代码 你猜] name:咔咔 咔咔博客地址:blog.fangkang.top 咔咔手赚网地址:fangkang.top]
    fmt.Println("文件解码成功", mMap)
  }
}

json转为结构体

image.png

package main
import (
  "encoding/json"
  "fmt"
  "os"
)
type persons struct {
  Name string
  Like []string
}
/**
json解码为结构体
*/
func main() {
  file, e := os.OpenFile("d:/kaka.json", os.O_RDONLY, 0666)
  if e != nil {
    fmt.Println("文件打开失败")
  } else {
    fmt.Println("json文件打开成功")
  }
  // 文件挂起执行完关闭文件
  defer file.Close()
  // 创建解码器
  decoder := json.NewDecoder(file)
  // 创建的本来就是一个指针
  perPtr := new(persons)
  err := decoder.Decode(perPtr)
  if err != nil {
    fmt.Println("文件解码失败")
  } else {
    //文件解码成功 &{咔咔 [撸代码 你猜]}
    fmt.Println("文件解码成功", perPtr)
  }
}

案例注意点

  • json转结构体时,结构体的属性需要大写。new一个结构体出来就是指针
  • 接送转map时需要传入map指针
相关文章
|
5月前
|
Linux Go iOS开发
Go语言100个实战案例-进阶与部署篇:使用Go打包生成可执行文件
本文详解Go语言打包与跨平台编译技巧,涵盖`go build`命令、多平台构建、二进制优化及资源嵌入(embed),助你将项目编译为无依赖的独立可执行文件,轻松实现高效分发与部署。
980 162
|
4月前
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
160 2
|
12月前
|
编译器 Go
揭秘 Go 语言中空结构体的强大用法
Go 语言中的空结构体 `struct{}` 不包含任何字段,不占用内存空间。它在实际编程中有多种典型用法:1) 结合 map 实现集合(set)类型;2) 与 channel 搭配用于信号通知;3) 申请超大容量的 Slice 和 Array 以节省内存;4) 作为接口实现时明确表示不关注值。此外,需要注意的是,空结构体作为字段时可能会因内存对齐原因占用额外空间。建议将空结构体放在外层结构体的第一个字段以优化内存使用。
|
7月前
|
数据采集 JSON 自然语言处理
Go语言实战案例-统计文件中每个字母出现频率
《Go语言100个实战案例》中的“文件与IO操作篇 - 案例19”教你如何统计文本文件中每个英文字母的出现频率。通过实战练习,掌握文件读取、字符处理、map统计等基础技能,适合Go语言初学者提升编程能力。
|
7月前
|
数据采集 Go
Go语言实战案例-批量重命名文件
《Go语言100个实战案例》中的“文件与IO操作篇 - 案例17:批量重命名文件”,适合初学者学习使用 Go 操作文件系统,实现文件批量重命名功能,包括添加前缀、后缀或编号等。
|
7月前
|
JSON 缓存 Go
Go语言实战案例-向文件写入内容
本案例讲解如何使用 Go 语言向文件写入内容,涵盖覆盖写入与追加写入两种模式,适用于日志记录、报告生成等场景。涉及 `os.WriteFile`、`os.OpenFile` 等核心函数,并演示如何处理文件权限与编码问题。
|
7月前
|
存储 人工智能 安全
深入理解 go sync.Map - 基本原理
本文介绍了 Go 语言中 `map` 在并发使用时的常见问题及其解决方案,重点对比了 `sync.Mutex`、`sync.RWMutex` 和 `sync.Map` 的性能差异及适用场景。文章指出,普通 `map` 不支持并发读写,容易引发错误;而 `sync.Map` 通过原子操作和优化设计,在某些场景下能显著提升性能。同时详细讲解了 `sync.Map` 的基本用法及其适合的应用环境,如读多写少或不同 goroutine 操作不同键的场景。
324 1
|
8月前
|
XML JSON Go
Go语言中的文件与IO:JSON、CSV、XML处理
本文介绍了 Go 语言中对 JSON、CSV 和 XML 三种常见数据格式的处理方法。通过标准库 `encoding/json`、`encoding/csv` 和 `encoding/xml`,可以实现结构体与数据格式之间的序列化与反序列化。JSON 适合 Web API 和前后端通信,因其清晰易读;CSV 适用于表格数据和轻量级交换;XML 则支持复杂嵌套结构,常用于配置文件和 SOAP 协议。文中提供代码示例,涵盖基本使用、嵌套结构处理及实战建议,帮助开发者高效操作这些格式。
|
7月前
|
Go 开发工具 git
Go语言实战案例-遍历目录下所有文件
本案例讲解如何使用 Go 语言递归遍历目录及其子目录中的所有文件。通过 `filepath.WalkDir` 函数实现目录遍历,涵盖文件判断、路径获取和错误处理等知识点,适用于文件管理、批量处理和查找特定类型文件等场景。
|
8月前
|
Unix Go
Go语言中的文件与IO:文件读写
本文介绍了 Go 语言中文件操作的基础方法,涵盖打开与关闭文件、读取和写入文件内容、追加写入以及复制文件等功能。通过 `os`、`bufio` 和 `io` 等标准库包,提供了高效且灵活的实现方式,如使用 `os.ReadFile` 读取整个文件、`bufio.Scanner` 逐行读取、`os.Create` 创建文件以及 `io.Copy` 复制文件内容。同时强调了错误处理的重要性,例如使用 `defer` 确保文件关闭,并推荐注意文件权限设置(如 UNIX 系统中的 `0644`)。最后以表格形式总结了常用操作及其推荐方法,便于快速查阅和应用。

热门文章

最新文章