Go語言中的json包提供了方便的處理JSON格式數據的工具,而當處理空數組時,可能會遇到一個令人困惑的問題:空數組在JSON格式中是沒有長度的,如何在使用Go語言解析時獲取它的長度呢?
var emptyArray []int data := []byte(`{"array": []}`) err := json.Unmarshal(data, &map[string]interface{}{ "array": &emptyArray, }) if err != nil { panic(err) } fmt.Println(len(emptyArray)) // 輸出:0
在上面的示例中,我們定義了一個空int型的數組emptyArray,并使用json.Unmarshal()函數將JSON字符串解析成一個map[string]interface{}類型的變量。然后,我們將空數組綁定到JSON對象中的array字段上,并使用len()函數獲取它的長度。由于空數組在JSON格式中不包含任何元素,因此其長度為0。
需要注意的是,在使用Unmarshal()函數時,必須將空數組的引用傳遞給該函數,否則無法將JSON對象的值綁定到該變量上。此外,還可以使用json.RawMessage類型將空數組直接綁定到JSON字符串上,例如:
var emptyArray []int data := []byte(`{"array": []}`) var v struct{ Array json.RawMessage `json:"array"` } err := json.Unmarshal(data, &v) if err != nil { panic(err) } if len(v.Array) == 0 { fmt.Println("empty array") }
在上面的示例中,我們定義了一個包含json.RawMessage類型字段的結構體,并使用 Unmarshal() 函數將JSON字符串解析到該結構體變量中。然后,我們可以通過該結構體變量的Array字段獲取JSON字符串中包含的空數組,并使用len()函數判斷其長度是否為0。
上一篇html應用不顯代碼