golang:json 反序列化的[]和nil操作
作者:天已青色等烟雨来 时间:2024-04-26 17:19:24
我就废话不多说了,大家还是直接看代码吧~
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后,值为[]。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持asp之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/x356982611/article/details/86015295
标签:golang,json,反序列化
0
投稿
猜你喜欢
Python3模拟登录操作实例分析
2022-01-18 13:36:26
PHP中单引号和双引号的区别详解
2023-05-25 08:16:51
Sql Server 2012 分页方法分析(offset and fetch)
2012-10-07 10:51:04
python多进程程序打包成exe的问题
2023-08-07 13:39:03
Python实现的三层BP神经网络算法示例
2021-05-16 19:21:05
使用python将请求的requests headers参数格式化方法
2021-06-12 07:22:49
Python中暂存上传图片的方法
2022-04-05 20:53:08
Python实现抓取HTML网页并以PDF文件形式保存的方法
2022-12-15 22:56:30
仿豆瓣分页原型(Javascript版)
2007-11-05 14:04:00
python读取hdfs并返回dataframe教程
2022-03-22 17:15:33
JavaScript遍历求解数独问题的主要思路小结
2023-10-13 16:41:14
python自动保存百度盘资源到百度盘中的实例代码
2023-12-18 07:05:01
Python中处理字符串之endswith()方法的使用简介
2023-02-25 09:05:36
Go语言实现的可读性更高的并发神库详解
2023-07-20 08:03:49
php下载远程大文件(获取远程文件大小)的实例
2024-05-03 15:29:47
往MySQL中存储图片的方法
2024-01-17 15:57:49
Pandas数据分析之pandas数据透视表和交叉表
2021-01-18 05:43:45
如何取得刚添加的记录自动增加的ID?
2010-01-18 20:55:00
python原始套接字编程示例分享
2021-10-09 19:00:07
vue使用v-for实现hover点击效果
2024-05-02 17:09:03