Golang

读取文件

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