golangラーニング---JSONファイル操作

1963 ワード

golang操作JSONファイル


JSONは重要なデータフォーマットとして、現在のweb開発においてますます重要になっている.golangではjsonパッケージのメソッドを使用してjsonフォーマットのファイルを操作できます.

JSONデータの生成

    json := make(map[string]interface{})
    json["name"] = "foo"
    json["title"] = "bar"
    json["content"] = map[string]interface{}{
        "first": "one",
        "second": "two",
    }
    //    json(   )
    //     Marshal      ,       
    bytes, err := json.MarshalIndent(json, "", " ")
    if err != nil{
        log.Println("ERROR:",err)
    }
    fmt.Println(string(bytes))

JSONデータの読み出し


ここではファイルから取得したJSONを使用します
//          
func readJson(filePath string) (result string){
    file, err := os.Open(filePath)
    defer file.Close()
    if err != nil {
        fmt.Println("ERROR:", err)
    }
    buf := bufio.NewReader(file)
    for {
        s, err := buf.ReadString('
') result += s if err != nil { if err == io.EOF{ fmt.Println("Read is ok") break }else{ fmt.Println("ERROR:", err) return } } } return result } func main() { var data struct{ Id int Customerld int Raised string Due string Paid bool Note string Items []struct{ Id string Price float64 Quantity int Note string } } result := readJson("F:\\GolangProject\\io\\file_option\\json\\json.json") err := json.Unmarshal([]byte(result), &data) if err != nil { fmt.Println("ERROR:",err) } fmt.Println(data) }

PS:以上、構造の対象のパラメータの頭文字は大文字でなければならないことに注意してください.そうしないと、JSONデータは構造体に追加されません.