Go的目标是希望提升现有编程语言对程序库等依赖性(dependency)的管理,这些软件元素会被应用程序反复调用。由于存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务。
很多人喜欢Go语言Google也对Go寄予厚望。其设计是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。它具有现代的程序语言特色,如垃圾回收,帮助程序设计师处理琐碎但重要的内存管理问题。Go的速度也非常快,几乎和C或C++程序一样快,且能够快速制作程序。
兄弟连教育区块链学院是由兄弟连教育携手微软区块链领域全球最具价值专家尹成及其带领的清华水木未名教学团队所组成,学习周期为五个半月,内容涵盖Go语言、区块链密码学、分布式编程、共识算法、公链开发、智能合约与DAPP开发、区块链系统框架开发超级账本与区块链3.0EOS等内容,现在兄弟连Go语言培训就为大家讲解一下Go语言JSON读写3:读写JSON文件。
概述
本地文件是存储JSOP数据的一个重要方案
将Go数据以JSON字符串的形式写出到文件中的过程称之为编码
从文件中读取JSON字符串为Go数据的过程称之为解码
导入依赖
import (
"encoding/json"
"os"
"fmt"
)
定义结构体
type PersonII struct {
Name string
Age int
Sex bool
Hobbies []string
}
将Go数据编码到json文件
将结构体实例以JSON格式写出到文件的过程称为编码,其一般步骤是:
准备Go数据
打开文件并创建基于该文件的JSON编码器
将Go数据编码到文件中
func main31() {
//创建PersonII实例小黑子
xhz := PersonII{"小黑子", 60, true, []string{"撸代码", "撸项目", "撸其它的"}}
//创建文件(并打开)
filePtr, err := os.Create("d:/小黑子.json")
if err!=nil{
fmt.Println("创建文件失败,err=",err)
return
}
defer filePtr.Close()
//创建基于文件的JSON编码器
encoder := json.NewEncoder(filePtr)
//将小黑子实例编码到文件中
err = encoder.Encode(xhz)
if err!=nil{
fmt.Println("编码失败,err=",err)
}else{
fmt.Println("编码成功")
}
}
将json文件解码为Go数据
从文件中读取JSON数据为Go语言数据的过程称之为解码,其一般步骤为:
打开含有JSON字符串的文件
创建基于改文件的JSON解码器
解码文件中的JSON数据到相应的Go数据指针中
func main32() {
//预定义解码结果
var xhz PersonII
//打开文件
filePtr, _ := os.Open("d:/小黑子.avi")
defer filePtr.Close()
//创建该文件的json解码器
decoder := json.NewDecoder(filePtr)
//把解码的结果存在xhz的地址中
err := decoder.Decode(&xhz)
if err!=nil{
fmt.Println("解码失败,err=",err)
}else {
fmt.Printf("解码成功:%#v\n",xhz)
}
}
有疑问加站长微信联系(非本文作者)