go語言中json數據的讀取和寫出

go自帶json庫,在使用時需要通過 import "encoding/json"來導入該庫。在讀取和寫入json數據之前需要定義相關的結構體來對應被操作的json數據的格式,並且結構體中需要導出或導入的變量首字母大寫。其中,json.Marshal()用於將一個對象轉換爲json格式的字節數組,json.Unmarshal()用於將json格式的字節數組轉換爲一個對象。具體使用示例如下所示:

首先,定義結構體:

type Com struct {                                                                                                                                                          
        Name string
        Nodes []string
}      

讀取操作(從文件中讀取json數組到結構體數組中):

func load(fname string) {
        var cs []Com = make([]Com, 0)
        fp, err := os.Open(fname)
        if err != nil {
                panic(err)
        }      
        defer fp.Close()
        bytes, err := ioutil.ReadAll(fp)
        if err != nil {
                panic(err)
        }      
        err = json.Unmarshal(bytes, &cs)
        if err != nil {
                panic(err)
        }
        //使用cs
        ...       
}        

寫出操作(將結構體數組轉換爲json數組並寫入文件):

func dump(fname string) {
        fp, err := os.Create(fname)
        if err != nil {
                panic(err)
        }  
        defer fp.Close()
        cs := []Com{}
        cs = append(cs, Com{"1", []string{"1.1", "2.2"}})
        cs = append(cs, Com{"2", []string{"2.2", "3.2"}})
        cs = append(cs, Com{"3", []string{"3.4", "4.5"}})
        data, err := json.Marshal(cs)
        if err != nil {
                panic(err)
        }  
        n, err := fp.Write(data)
        if err != nil {
                panic(err)
        }  
}          

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章