go语言中 json转换--nil

Posted 翔云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
", a)
}

output:

result:{Size:0 Addr: Num:<nil>}

如果"null"作为json字符串,转换为slice后,值为[]

以上是关于go语言中 json转换--nil的主要内容,如果未能解决你的问题,请参考以下文章

Go语言开发(十六)Go语言常用标准库六

Go语言JSON 处理

Go -- 在Go语言中使用JSON struct

go语言json转map

理解Go语言的nil

Go语言之读取yaml配置文件,转换成struct结构,json形式输出