读取文件
os.Open()ioutil.ReadAll()ioutil.ReadAll()[]bytesstring()user.json
user.json
{
"first_name": "Nicholas",
"last_name": "Lee",
"blog_url": "https://www.qttc.net",
"blog_name": "琼台博客"
}
main.go
package main
import (
"fmt"
"io/ioutil"
"os"
)
func main() {
// 打开json文件
jsonFile, err := os.Open("user.json")
// 最好要处理以下错误
if err != nil {
fmt.Println(err)
}
// 要记得关闭
defer jsonFile.Close()
byteValue, _ := ioutil.ReadAll(jsonFile)
fmt.Println(string(byteValue))
}
运行结果
$ go run main.go
{
"first_name": "Nicholas",
"last_name": "Lee",
"blog_url": "https://www.qttc.net",
"blog_name": "琼台博客"
}
解析json内容
以上我们成功读取到了JSON文件的内容,现在我们就要解析它,我通常比较喜欢使用struct类型做转换,所以我们先定义一个struct
type User struct {
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
BlogURL string `json:"blog_url"`
BlogName string `json:"blog_name"`
}
json.Unmarshal()
main.go
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
)
type User struct {
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
BlogURL string `json:"blog_url"`
BlogName string `json:"blog_name"`
}
func main() {
// 打开json文件
jsonFile, err := os.Open("user.json")
// 最好要处理以下错误
if err != nil {
fmt.Println(err)
}
// 要记得关闭
defer jsonFile.Close()
byteValue, _ := ioutil.ReadAll(jsonFile)
var user User
json.Unmarshal([]byte(byteValue), &user)
fmt.Println(user)
}
运行结果
$ go run main.go
{Nicholas Lee https://www.qttc.net 琼台博客}
map[string]interface{}
main.go
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
)
func main() {
// 打开json文件
jsonFile, err := os.Open("user.json")
// 最好要处理以下错误
if err != nil {
fmt.Println(err)
}
// 要记得关闭
defer jsonFile.Close()
byteValue, _ := ioutil.ReadAll(jsonFile)
var result map[string]interface{}
json.Unmarshal([]byte(byteValue), &result)
fmt.Println(result)
}
运行结果
$ go run main.go
map[blog_name:琼台博客 blog_url:https://www.qttc.net first_name:Nicholas last_name:Lee]
map[string]interface{}map