golang 是一種強類型語言,它內置了對 JSON 數據格式的支持。無論是在網絡傳輸數據、讀寫文件還是與數據庫交互等場景,JSON 都是極為常見的數據格式。而切片(slice)則是 golang 中的一種動態數組,與 JSON 數據格式的配合使用可以更加方便地對 JSON 數據進行處理。
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { var persons []Person jsonStr := `[{ "name": "Alice", "age": 20 }, { "name": "Bob", "age": 30 }]` err := json.Unmarshal([]byte(jsonStr), &persons) if err != nil { panic(err) } fmt.Println(persons) }
上面的代碼解析了一個包含兩個 Person 對象的 JSON,通過 json.Unmarshal 函數將 JSON 字符串解析為一個 Person 結構體的切片。其中 json.Unmarshal 的第一個參數是一個字節數組,即 JSON 字符串;第二個參數是一個指向切片的指針,函數將把解析的數據保存到此切片中。
從輸出中可以看到 Person 對象被成功解析。如果想要修改 Person 對象的某個字段,并將其序列化為 JSON,也可以使用切片進行方便的修改。
func main() { var persons []Person jsonStr := `[{ "name": "Alice", "age": 20 }, { "name": "Bob", "age": 30 }]` err := json.Unmarshal([]byte(jsonStr), &persons) if err != nil { panic(err) } persons[0].Age = 21 newJsonStr, err := json.Marshal(persons) if err != nil { panic(err) } fmt.Println(string(newJsonStr)) }
上面的代碼將第一個 Person 的年齡改為 21,并且通過 json.Marshal 函數將修改后的切片序列化為 JSON 字符串。通過打印得到的結果可以看到,第一個 Person 的年齡已經被改變。
可以看到,使用 golang 的切片對 JSON 數據進行處理非常方便,能夠讓我們更加容易地對數據進行增、刪、改和查。
上一篇mysql加索引的效率
下一篇html必學100代碼