最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang:json 反序列化的[]和nil操作

 更新時(shí)間:2020年12月24日 14:51:10   作者:天已青色等煙雨來  
這篇文章主要介紹了golang:json 反序列化的[]和nil操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

package main
import (
	"encoding/json"
	"log"
)
type JS struct {
	A []string
}
func main() {
	v1 := &JS{}
	v2 := &JS{A: []string{}}
	o1, err := json.Marshal(&v1)
	log.Println(string(o1), err)
	o2, err2 := json.Marshal(&v2)
	log.Println(string(o2), err2)
}

結(jié)果

2019/01/07 18:13:26 {"A":null} <nil>

2019/01/07 18:13:26 {"A":[]} <nil>

補(bǔ)充:go語言中 json轉(zhuǎn)換--nil

go語言中如果一個(gè)變量的值為nil,是否能否為json?

如果能否轉(zhuǎn)換,轉(zhuǎn)換后的結(jié)果是什么?

下面直接看下例子。

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

結(jié)果輸出為"null"。

也就是說,凡是值為nil的變量,經(jīng)過json編碼后都是"null"。例如,未賦值的指針變量、切片slice等:

var ptr *int

var s []int

反過來,如果一個(gè)json字符串是"null",經(jīng)過解析后,轉(zhuǎn)換后的值是什么樣呢?

例如,轉(zhuǎn)換為結(jié)構(gòu)體,轉(zhuǎn)換后為結(jié)構(gòu)體變量的默認(rèn)值。

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字符串,轉(zhuǎn)換為slice后,值為[]。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • GO語言中回調(diào)函數(shù)的使用

    GO語言中回調(diào)函數(shù)的使用

    本文主要介紹了GO語言中回調(diào)函數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 詳解golang碎片整理之 fmt.Scan

    詳解golang碎片整理之 fmt.Scan

    本文介紹了從golang語言中fmt包從標(biāo)準(zhǔn)輸入獲取數(shù)據(jù)的Scan系列函數(shù)、從io.Reader中獲取數(shù)據(jù)的Fscan系列函數(shù)以及從字符串中獲取數(shù)據(jù)的Sscan系列函數(shù)的用法,感興趣的小伙伴們可以參考一下
    2019-05-05
  • golang游戲等資源壓縮包創(chuàng)建和操作方法

    golang游戲等資源壓縮包創(chuàng)建和操作方法

    這篇文章主要介紹了golang游戲等資源壓縮包創(chuàng)建和操作,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • 一文搞懂Golang中的內(nèi)存逃逸

    一文搞懂Golang中的內(nèi)存逃逸

    我們都知道go語言中內(nèi)存管理工作都是由Go在底層完成的,這樣我們可以不用過多的關(guān)注底層的內(nèi)存問題。本文主要總結(jié)一下?Golang內(nèi)存逃逸分析,需要的朋友可以參考以下內(nèi)容,希望對(duì)大家有幫助
    2022-09-09
  • golang實(shí)現(xiàn)mysql數(shù)據(jù)庫事務(wù)的提交與回滾

    golang實(shí)現(xiàn)mysql數(shù)據(jù)庫事務(wù)的提交與回滾

    這篇文章主要介紹了golang實(shí)現(xiàn)mysql數(shù)據(jù)庫事務(wù)的提交與回滾,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 在Golang中執(zhí)行Shell命令的教程詳解

    在Golang中執(zhí)行Shell命令的教程詳解

    在本教程中,我們將學(xué)習(xí)如何在 Golang 中執(zhí)行shell命令(如 ls、mkdir 或 grep ),我們還將學(xué)習(xí)如何通過 stdin 和 stdout 傳遞 I/O 到正在運(yùn)行的命令,以及管理長(zhǎng)時(shí)間運(yùn)行的命令,感興趣的同學(xué)可以借鑒一下
    2023-05-05
  • GoFrame框架ORM原生方法對(duì)象操作開箱體驗(yàn)

    GoFrame框架ORM原生方法對(duì)象操作開箱體驗(yàn)

    這篇文章主要為大家介紹了GoFrame框架ORM原生方法對(duì)象操作的開箱體驗(yàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Golang學(xué)習(xí)筆記(四):array、slice、map

    Golang學(xué)習(xí)筆記(四):array、slice、map

    這篇文章主要介紹了Golang學(xué)習(xí)筆記(四):array、slice、map,本文分別講解了這3個(gè)類型的聲明&賦值、元素訪問、其它操作,需要的朋友可以參考下
    2015-05-05
  • PHP結(jié)構(gòu)型模式之組合模式

    PHP結(jié)構(gòu)型模式之組合模式

    這篇文章主要介紹了PHP組合模式Composite Pattern優(yōu)點(diǎn)與實(shí)現(xiàn),組合模式是一種結(jié)構(gòu)型模式,它允許你將對(duì)象組合成樹形結(jié)構(gòu)來表示“部分-整體”的層次關(guān)系。組合能讓客戶端以一致的方式處理個(gè)別對(duì)象和對(duì)象組合
    2023-04-04
  • gin通過go build -tags實(shí)現(xiàn)json包切換及庫分析

    gin通過go build -tags實(shí)現(xiàn)json包切換及庫分析

    這篇文章主要為大家介紹了gin通過go build -tags實(shí)現(xiàn)json包切換及庫分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09

最新評(píng)論

绿春县| 东明县| 象山县| 当涂县| 乐业县| 宝坻区| 侯马市| 阜康市| 平谷区| 离岛区| 刚察县| 乌兰县| 晴隆县| 富阳市| 屏山县| 偃师市| 麻阳| 彭水| 绥滨县| 潮安县| 通州区| 湘乡市| 兴文县| 威宁| 土默特左旗| 大厂| 宝坻区| 南开区| 芜湖市| 湘阴县| 饶平县| 泸州市| 尉氏县| 永嘉县| 五台县| 玛纳斯县| 正安县| 菏泽市| 瑞昌市| 兰考县| 安化县|