如错误所述,接口变量不支持索引。您将需要使用类型断言来转换为基础类型。
当解码为
interface{}变量时,JSON模块将数组表示为[]interface{}切片,将字典表示为map[string]interface{}映射。如果没有错误检查,您可以使用类似以下内容的内容来深入研究此JSON:
objects := result["objects"].([]interface{})first := objects[0].(map[string]interface{})fmt.Println(first["ITEM_ID"])如果类型不匹配,这些类型断言将惊慌。您可以使用两次返回表格,可以检查此错误。例如:
objects, ok := result["objects"].([]interface{})if !ok { // Handle error here}但是,如果JSON遵循已知格式,则更好的解决方案是将其解码为结构。给定示例中的数据,可以执行以下操作:
type Result struct { Query string `json:"query"` Count int `json:"count"` Objects []struct { ItemId string `json:"ITEM_ID"` ProdClassId string `json:"PROD_CLASS_ID"` Available int `json:"AVAILABLE"` } `json:"objects"`}如果您解码为这种类型,则可以使用来访问商品ID
result.Objects[0].ItemId。



