我正在使用Go构建一个Web服务器,我不知道如何使用Go处理JSON。
说我有一个结构如下:
type User struct{
Id int
Name string
Password string
Status int
}
现在我有了一个结构用户的对象:
user := User{1, "Test", "password", 1}
现在我需要将user
转换为JSON对象。这是我发现的:
b, err := json.Marshal(user)
fmt.Println(string(b))
效果很好。
现在我想做两件事:
1)从JSON对象中删除Password
2)将新的字段"code": 200
添加到JSON对象中
我该怎么办?
答案 0 :(得分:2)
如果要让外部包可以访问Password
属性,可以在其上设置标记:json:"-"
。正如docs:
可以按格式自定义每个结构字段的编码 存储在struct field标签中“json”键下的字符串。该 format string给出了字段的名称,可能后跟a 以逗号分隔的选项列表。该名称可能为空 指定选项而不覆盖默认字段名称。
“omitempty”选项指定应省略该字段 如果字段具有空值,则编码,定义为false,0,a nil指针,一个nil接口值,以及任何空数组,切片,map, 或字符串。
作为一种特殊情况,如果字段标记为“ - ”,则该字段始终为 省略即可。请注意,仍然可以使用生成名称为“ - ”的字段 标签“ - ,”。
type User struct {
Id int
Name string
Password string `json:"-"`
Status int
Code int `json:"code"`
}
答案 1 :(得分:0)
将Password
小写(并将Code int
添加到您的结构中):
试试this:
package main
import (
"encoding/json"
"fmt"
)
func main() {
user := User{1, "Test", "password", 1, 200}
b, err := json.Marshal(user)
if err != nil {
panic(err)
}
fmt.Println(string(b))
}
type User struct {
Id int
Name string
password string
Status int
Code int
}
输出:
{"Id":1,"Name":"Test","Status":1,"Code":200}