go語言中如果一個變量的值爲nil,是否能否爲json?
如果能否轉換,轉換後的結果是什麼?
下面直接看下例子。
package main
import (
"encoding/json"
"fmt"
)
func main() {
marshalTest()
}
func marshalTest() {
b, err := json.Marshal(nil)
if err != nil {
fmt.Println("json.Marshal failed:", err)
return
}
fmt.Println("result:", string(b))
}
output:
result: null
結果輸出爲"null"。
也就是說,凡是值爲nil的變量,經過json編碼後都是"null"。例如,未賦值的指針變量、切片slice等:
var ptr *int
var s []int
反過來,如果一個json字符串是"null",經過解析後,轉換後的值是什麼樣呢?
例如,轉換爲結構體,轉換後爲結構體變量的默認值。
package main
import (
"encoding/json"
"fmt"
)
func main() {
unmarshalTest()
}
type Apple struct {
Size int
Addr string
Num *int
}
func unmarshalTest() {
value := []byte("null")
a := Apple{}
if err := json.Unmarshal(value, &a); err != nil {
fmt.Println("json.Unmarshal failed:", err)
return
}
fmt.Printf("result:%+v\n", a)
}
output:
result:{Size:0 Addr: Num:<nil>}
如果"null"作爲json字符串,轉換爲slice後,值爲[]
。