当前位置:首页 > Golang杂记 > 正文内容

Go slice初始化转换json

2年前 (2020-11-30)Golang杂记913

        切片slice的声明和初始化 , 如果我们只是单纯的声明 var list []string  , 那么list现在是nil  , 转换成json后会变成null,
声明后使用了append函数增加了数据  , 那么就是正常的列表了. 我们看一段代码示例:

package main

import (
   "encoding/json"
   "fmt"
)

func main() {
   var list []string
   bytes, e := json.Marshal(list)
   if e != nil {
      fmt.Println("json序列化失败", e.Error())
   } else {
      fmt.Println(string(bytes))
   }
   //可以使用下面的形式初始化0个元素的切片slice ,  转换成json会是[]
   var list2 = []string{} //字面量初始化
   //或者
   //list:=make([]string,0)//make函数初始化
   bytes2, e := json.Marshal(list2)
   if e != nil {
      fmt.Println("json序列化失败", e.Error())
   } else {
      fmt.Println(string(bytes2))
   }

   // 在切片里边定义map类型
   mSlice := make([]map[string]interface{}, 0)
   //mSlice = append(mSlice, map[string]interface{}{"name": "babala"})
   bytes3, e := json.Marshal(mSlice)
   if e != nil {
      fmt.Println("json序列化失败", e.Error())
   } else {
      fmt.Println(string(bytes3))
   }
}


输出:

null
[]
[]

json_Marshal函数可以对切片,结构体和map转json.

    扫描二维码推送至手机访问。

    版权声明:本文由周伯通的博客发布,如需转载请注明出处。

    本文链接:http://zhoubotong.site/post/16.html

    分享给朋友:

    相关文章

    关于go协程同步的几种方法

    这里咋们简要介绍下关于go中协程的几种同步方法。先说下概念性的:协程概念简要理解协程有点类似线程,是一种更为轻量级的调度单位,但协程还是不同于线程的,线程是系统级实现的,常见的调度方法是时间片轮转法,...

    Go遍历struct,map,slice

    遍历结构体如何实现遍历结构体字段? 好吧,言归正传!举个例子:demo1:package main import (    "fmt...

    Go channel 协程为什么是安全的

        Channel跟java/php的 thread不一样,首先channel是协程不是线程。channel不会产生新的线程,自然不会涉及到新的进程或者线程...

    windows下编译linux可执行程序

    开发中,我们可以在Windows下编译Linux 64位可执行程序,首先获取目标系统所支持的构架,比如x86/x64/arm64/arm 等等。在 linux 系统中,我们可以使用命令 uname -...

    发表评论

    访客

    看不清,换一张

    ◎欢迎参与讨论,请在这里发表您的看法和观点。