json - 编码不解码时如何忽略 JSON 字段

标签 json go

假设我在用户结构中有一个密码字段。

type User struct{
   UserName string `json:"username"`
   Password string `json:"-"`
}

我的客户通过同时发布用户名和密码来注册他们的用户。因此,如果我将 JSON 解码为上述结构,它会忽略密码。这是预期的。但我想知道只有编码时有什么方法可以忽略字段。我检查了 go 官方文档页面,但找不到任何东西。

https://golang.org/pkg/encoding/json/

我可以在结构中添加一个额外的字段,但我首先需要知道是否可以使用 JSON 库来做到这一点。

最佳答案

一种常见的方法是使用临时类型或变量,具有相同的结构,但不同的 json 标签甚至不同的结构:

type User struct {
    UserName string `json:"username"`
    Password string `json:"password"`
}

func (usr User) MarshalJSON() ([]byte, error) {
    var tmp struct {
        UserName string `json:"username"`
    }
    tmp.UserName = usr.UserName
    return json.Marshal(&tmp)
}

关于json - 编码不解码时如何忽略 JSON 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47256201/

相关文章:

Golang接口(interface)的正确使用

google-app-engine - App Engine 中的身份验证方法

json - 快速解析 JSON

java - 从 JSON 中读取不带小数点的浮点或 double 值

Python 3.7 递归删除动态 JSON 字典/列表中不在列表中的名称的项目

mysql - 是什么导致此代码中的 SQL 语法错误 1064?

api - 我可以在我的 Go 程序中直接使用 go-ipfs 吗?

android - 将数组 Gson 提取为 JSON

c# - 将 mm/dd/yyyy 转换为 JsonDate 格式

unicode - ContainsRune 给出奇怪的结果