go - Golang如何检查struct field int是否设置?
问题描述
使用 golang 脚本,我有一个结构类型和下面的 json
结构
admin
type Admin struct {
Id string `json:"id"`
Status int `json:"status"`
}
json
jsonData
{
"id": "uuid"
}
当我使用json.Unmarshal(jsonData, &admin)
上面的 jsonData 时没有status
价值
admin.Status
默认值为0
。我如何检查admin.Status
未设置?
非常感谢!
解决方案
使用Status
字段指针:
package main
import (
"fmt"
"encoding/json"
)
type Admin struct {
Id string `json:"id"`
Status *int `json:"status"`
}
func main() {
b := []byte(`{"id": 1}`)
r := new(Admin)
json.Unmarshal(b, r)
fmt.Println(r.Status)
b2 := []byte(`{"id": 1, "status": 2}`)
r2 := new(Admin)
json.Unmarshal(b2, r2)
fmt.Println(*r2.Status)
}
当它在 Json 中不存在时,指针将为 nil。
推荐阅读
- powershell - 您将如何使用 powershell 检查 net5 dll 是否在调试或发布时编译?
- visual-studio-code - 如何在 Visual Studio Code 中更改活动选项卡的背景颜色?
- c++ - 如何使用 windows api 读写文本文件
- email - 订购电子邮件确认 magento 2
- java - 从组合框中获取选定的值返回 null javafx
- web-scraping - IMPORTXML 返回为空白
- visual-studio-code - 阻止 VS 代码通知:“启动”已在运行。是否要启动另一个实例?
- linq - 如何使用表达式函数调用类型的方法
- xcode - 安装可可豆荚后出现“ld:找不到选项的目录”构建错误
- php - PHP API 的网关错误问题