在 Go 中,當 JSON 鍵和結構體字段名稱不匹配時,可以使用 json
包中的 Unmarshal
函數進行反序列化。為了解決這個問題,可以在結構體中使用 json
標簽來指定 JSON 鍵與結構體字段之間的映射關系。
例如,假設我們有以下 JSON 數據:
{
"name": "Alice",
"age": 30
}
但是,我們的 Go 結構體字段名稱與 JSON 鍵不匹配:
type Person struct {
FirstName string `json:"name"`
Age int `json:"age"`
}
我們可以使用以下代碼片段進行反序列化:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
FirstName string `json:"name"`
Age int `json:"age"`
}
func main() {
jsonData := []byte(`{"name": "Alice", "age": 30}`)
var person Person
err := json.Unmarshal(jsonData, &person)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("Person: %+v
", person)
}
在這個例子中,我們使用了 json
標簽 json:"name"
和 json:"age"
來指定 JSON 鍵與結構體字段之間的映射關系。這樣,即使 JSON 鍵和結構體字段名稱不匹配,也可以正確地進行反序列化。