我就廢話不多說了,大家還是直接看代碼吧~
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)
}
結果
2019/01/07 18:13:26 {"A":null} nil>
2019/01/07 18:13:26 {"A":[]} nil>
補充: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后,值為[]。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- golang json數(shù)組拼接的實例
- 在golang xorm中使用postgresql的json,array類型的操作
- golang中json小談之字符串轉浮點數(shù)的操作
- golang 實現(xiàn)json類型不確定時的轉換
- golang中json的omitempty使用操作
- 解決Golang json序列化字符串時多了\的情況
- golang中json和struct的使用說明