我正在努力从以下代码中获取正确的输出:
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文本中找到它们(或应如何封送它们),例如:
json
type Animal2 struct { Name string `json:"json_name"` Spec string `json:"specification"` Id uint32 `json:"some_custom_id"` }