2.11 JSON読み書き3:JSONファイルの読み書き

3514 ワード

概要
  • ローカルファイルは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
    "
    ,xhz) } }