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)
}
}