Go語言中對JSON的支持十分完善,可以輕松地將JSON數據解析為Go的數據結構,也可以將Go的數據結構序列化為JSON格式數據。
為了將Go的數據結構序列化為JSON格式數據,可以使用Go語言內置的`encoding/json`包。這個包提供了方便的API,如下所示:
import "encoding/json"
func Marshal(v interface{}) ([]byte, error) // 將go的數據結構序列化為json字節數組
func Unmarshal(data []byte, v interface{}) error // 將json字節數組解析為go的數據結構
其中,`Marshal`函數將Go的數據結構序列化為JSON格式的字節數組,`Unmarshal`函數將JSON格式的字節數組解析為Go的數據結構。
下面是一個序列化結構體的示例:
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "John", Age: 30}
b, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(b)) // 輸出: {"Name":"John","Age":30}
}
上面的代碼定義了一個`Person`結構體,其中包含姓名和年齡兩個屬性。我們將這個結構體序列化為JSON格式的字節數組,并輸出到控制臺中。
如果要將JSON格式的字節數組解析為Go的數據結構,可以使用`Unmarshal`函數,示例如下:
type Person struct {
Name string
Age int
}
func main() {
b := []byte(`{"Name":"John","Age":30}`)
var p Person
err := json.Unmarshal(b, &p)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(p.Name, p.Age) // 輸出: John 30
}
上面的代碼先定義了一個JSON格式的字節數組,然后使用`Unmarshal`函數將字節數組解析為`Person`結構體。最后,輸出了這個結構體的兩個屬性值。
除了上面的示例,`encoding/json`包還提供了更加靈活的API,例如使用JSON標簽對Go的數據結構進行自定義字段名、對JSON格式數據進行格式化等功能。
上一篇vue bar門票