Golang 对json文件进行操作

写JSON文件

   func main() {
    // 创建文件
    filePtr, err := os.Create("info.json")
    if err != nil {
        fmt.Println("文件创建失败", err.Error())
        return
    }
    defer filePtr.Close()
    // 创建Json编码器
    encoder := json.NewEncoder(filePtr)
    err = encoder.Encode(info)
    if err != nil {
        fmt.Println("编码错误", err.Error())
    } else {
        fmt.Println("编码成功")
    }
}

读 JSON 文件

func main() {
    filePtr, err := os.Open("./info.json")
    if err != nil {
        fmt.Println("文件打开失败 [Err:%s]", err.Error())
        return
    }
    defer filePtr.Close()
    var info []Website
    // 创建json解码器
    decoder := json.NewDecoder(filePtr)
    err = decoder.Decode(&info)
    if err != nil {
        fmt.Println("解码失败", err.Error())
    } else {
        fmt.Println("解码成功")
        fmt.Println(info)
    }
}

修改JSON文件

// 1. 将json文件内容粘贴到上面链接中,自动转成Golang结构体
// 2. "_"代表"error"
type MyJsonStruct struct {
    ...
}

var myJsonStruct MyJsonStruct

bytes, _ := ioutil.ReadFile(jsonFile)

_ = json.Unmarshal(bytes, &myJsonStruct)

操作结构体...

// 最后面4个空格,让json格式更美观
result, _ := json.MarshalIndent(myJsonStruct, "", "    ")

_ = ioutil.WriteFile(jsonFile, result, 0644)

Sitemap · Rss

津ICP备2021004480号-3