Golang 语言怎么高效读写 JSON 字符串?

简介: Golang 语言怎么高效读写 JSON 字符串?

介绍

在 Golang 语言程序开发中,经常会遇到读写 JSON 字符串的场景,一般我们是先使用 Golang 标准库 encoding/json 解码,读写操作后,再编码。过程比较繁琐,代码也不优雅。

本文我们介绍两个三方库 sjson 和 gjson,我们可以使用这两个三方库高效读写操作 JSON 字符串。

sjson

所谓 sjson 就是 set json 的缩写,使用 sjson 可以通过指定 JSON 的 Key 高效设置 Value。

安装:

$ go get -u github.com/tidwall/sjson

示例代码:

// sjson set a value
func set(str string) {
 s, err := sjson.Set(str, "Email", "frank@qq.com")
 if err != nil {
  fmt.Println(err)
 }
 fmt.Println(s)
}

阅读上面这段代码,我们使用 sjson 包的 Set 方法,给定 JSON 字符串,Key 和 Value,高效设置 JSON 的值,不再需要先使用 encoding/json 包解码 JSON 字符串,设置完值,然后再编码为 JSON 字符串。这种方式不仅高效,而且代码更加简洁。

更多关于 sjson 的使用,建议感兴趣的读者朋友们阅读官方文档。

03

gjson

所谓 gjson 就是 get json 的缩写,使用 gjson 可以通过指定 JSON 的 Key 高效获取 Value。

安装:

$ go get -u github.com/tidwall/gjson

示例代码:

// gjson get a value
func get(str string) {
 rst := gjson.Get(str, "Name")
 fmt.Println(rst)
}

阅读上面这段代码,我们使用 gjson 包的 Get 方法,给定 JSON 字符串和 Key,高效获取 JSON 的值,不再需要先使用 encoing/json 包解码 JSON 字符串,然后再获取指定的 Value。这种方式不仅高效,而且代码更加简洁。

此外,gjson 包还提供了很多方便的方法供我们使用。

更多关于 gjson 的使用,建议感兴趣的读者朋友们阅读官方文档。

04

总结

本文我们介绍了两个高效读写操作 JSON 字符串的三方库,sjson 和 gjson。虽然我不建议大家在标准库可以满足需求的情况下,引入太多的三方库,但是,如果读者朋友们在 Golang 语言程序开发中,也经常需要操作 JSON 字符串,我还是会强烈建议大家使用上这两个三方库,不仅会提升你的开发效率,还可以使你写的代码更加优雅,不妨试试吧。

推荐阅读:

Go 语言学习之基础数据类型

Go 语言学习之常量

参考资料:


目录
相关文章
|
2月前
|
JSON JavaScript 前端开发
Go语言中json序列化的一个小坑,建议多留意一下
在Go语言开发中,JSON因其简洁和广泛的兼容性而常用于数据交换,但其在处理数字类型时存在精度问题。本文探讨了JSON序列化的一些局限性,并介绍了两种替代方案:Go特有的gob二进制协议,以及msgpack,两者都能有效解决类型保持和性能优化的问题。
71 7
|
2月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
61 4
|
4月前
|
XML JSON 前端开发
json字符串CSS格式化
完成以上步骤后,你便能在网页中看到格式化后的JSON数据,它们将按照CSS定义的样式进行展示,使数据更易于阅读和理解。通过有效地结合JSON和CSS,你可以创建出更加丰富且易于交互的网页内容。
226 64
|
3月前
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
504 7
|
4月前
|
Prometheus Cloud Native Go
Golang语言之Prometheus的日志模块使用案例
这篇文章是关于如何在Golang语言项目中使用Prometheus的日志模块的案例,包括源代码编写、编译和测试步骤。
87 3
Golang语言之Prometheus的日志模块使用案例
|
3月前
|
前端开发 中间件 Go
实践Golang语言N层应用架构
【10月更文挑战第2天】本文介绍了如何在Go语言中使用Gin框架实现N层体系结构,借鉴了J2EE平台的多层分布式应用程序模型。文章首先概述了N层体系结构的基本概念,接着详细列出了Go语言中对应的构件名称,包括前端框架(如Vue.js、React)、Gin的处理函数和中间件、依赖注入和配置管理、会话管理和ORM库(如gorm或ent)。最后,提供了具体的代码示例,展示了如何实现HTTP请求处理、会话管理和数据库操作。
57 0
|
4月前
|
XML JSON 前端开发
json字符串CSS格式化
json字符串CSS格式化
84 5
|
4月前
|
JSON 数据格式 Python
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
|
4月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
160 4
Golang语言之管道channel快速入门篇
|
4月前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
80 4
Golang语言文件操作快速入门篇

热门文章

最新文章