面试题答案
一键面试-
使用标准库进行JSON序列化示例:
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { p := Person{ Name: "Alice", Age: 30, } data, err := json.Marshal(p) if err!= nil { fmt.Println("Marshal error:", err) return } fmt.Println(string(data)) }
在上述代码中,首先定义了一个
Person
结构体,然后使用json.Marshal
函数将Person
结构体实例p
序列化为JSON格式的字节切片。如果序列化成功,将其转换为字符串并打印。 -
结构体字段名与JSON字段名不一致时的处理: 在Go语言中,通过结构体标签(struct tag)来处理这种情况。例如在上述
Person
结构体中,Name
字段对应的JSON字段名为name
,Age
字段对应的JSON字段名为age
。结构体标签json:"field_name"
中的field_name
就是在JSON序列化和反序列化时使用的字段名。这样即使Go结构体中的字段名和JSON中的字段名不一致,也能正确地进行转换。例如,如果JSON数据中的字段名是"name"
,而Go结构体中定义为FullName
,可以这样写:type Person struct { FullName string `json:"name"` Age int `json:"age"` }
这样在序列化和反序列化时,
FullName
字段就会对应JSON中的"name"
字段。