php小編新一為你解答為什麼結構體欄位顯示為空。在程式設計中,結構體是一種自訂的資料類型,用於儲存不同類型的資料。當結構體欄位顯示為空時,可能是因為未正確初始化結構體或未給予欄位賦值。另外,也可能是由於字段的作用域問題或結構體定義的錯誤。要解決這個問題,可以檢查程式碼中的初始化部分,確保正確地賦予欄位值。同時,檢查結構體的定義和作用域,確保其能夠正確存取到欄位的值。
我正在努力從以下程式碼中獲得正確的輸出:
package main import ( "encoding/json" "fmt" ) func main() { var jsonBlob3 = []byte(`[ {"name": "Platypus", "spec": "Monotremata", "id":25 }, {"name": "Quoll", "spec": "Dasyuromorphia", "id":25 } ]`) type Animal2 struct { name string spec string id uint32 } var animals []Animal2 err := json.Unmarshal(jsonBlob3, &animals) if err != nil { fmt.Println("error:", err) } fmt.Printf("%+v\n", animals) }
遊樂場片段
列印時結構體欄位為空。我確信某個地方有一個愚蠢的錯誤,但我對 Go 仍然是新手,而且我已經在這個問題上停留了幾個小時了。請幫忙。
這個問題已經出現過很多次了。問題是只有導出的欄位可以被封送/取消封送。
匯出以大寫字母開頭的結構體欄位。
type Animal2 struct { Name string Spec string Id uint32 }
在 Go Playground 上嘗試。
請注意,JSON 文字包含小寫文字的欄位名稱,但 json
套件「聰明」足以匹配它們。如果它們完全不同,您可以使用 struct 標籤告訴 json
套件如何在 JSON 文字中找到它們(或如何整理它們),例如:
type Animal2 struct { Name string `json:"json_name"` Spec string `json:"specification"` Id uint32 `json:"some_custom_id"` }
以上是為什麼結構體欄位顯示為空?的詳細內容。更多資訊請關注PHP中文網其他相關文章!