go語言中 json轉換--nil

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後,值爲[]

發佈了471 篇原創文章 · 獲贊 170 · 訪問量 208萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章