如何在golang中对json进行反序列化-创新互联

本篇文章给大家分享的是有关如何在golang中对json进行反序列化,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

在襄阳等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、网站建设 网站设计制作定制网站建设,公司网站建设,企业网站建设,品牌网站建设,成都营销网站建设,外贸网站制作,襄阳网站建设费用合理。
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}

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

补充: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:}

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

以上就是如何在golang中对json进行反序列化,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。


标题名称:如何在golang中对json进行反序列化-创新互联
本文路径:http://hbruida.cn/article/dhcgsh.html