当前位置: 首页 > 面试题库 >

编组而不是编组时如何忽略JSON字段

李景天
2023-03-14
问题内容

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

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

我的客户通过一起发布用户名和密码来注册用户。因此,如果我将JSON解码为上述struct,它将忽略密码。可以预料的
但是我想知道是否只有编组时才能忽略字段。我检查了官方文档页面,但找不到任何东西。

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

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


问题答案:

一种常见的方法是使用结构相同但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)
}


 类似资料:
  • 对象使用JAXBContext创建的封送器进行封送。生成的xml将变成: 类Hi是从不能更改的xsd生成的。我的问题是,如果“hello”为null,有没有一种方法可以让封送器忽略nillable参数,并且不向xml输出任何内容?

  • 问题内容: 我正在尝试对从Zend_DB查询返回的数组进行json_encode。 var_dump给出:(手动添加0个成员不会更改图片。) 编码后的字符串如下所示: 我需要的是: php.ini / json_encode文档说的应该是什么样子。 问题答案: 您如何设置初始阵列? 如果您将其设置为: 那么您就没有一个带有数字索引而是一个字符串的数组,并且该数组将转换为JS world中的一个对象

  • 问题内容: 我目前有一个从mysql查询中使用json_encode的json,如下所示: 我怎样才能让json是帖子数组(“ post_2”,“ post_1”)而不是字典?JSON将在iPhone上使用SBJSON解码,并且必须将JSON制成后端的数组。 提前致谢。 问题答案: 为提供非关联数组。最简单的方法通常是简单地调用(关联)数组,并对结果进行编码。

  • 问题内容: 在成功提交用户详细信息时,我从客户端获得了JSON。 由于未更新JSON中的某些元素,因此可以跳过。 在Go服务器端,我定义了一个等效的结构。 服务器成功将JSON字节编组到结构中。 但是对于未从客户端接收到的字段,默认情况下取消对字符串的硬编码解组为nil,对字符串数组解压缩为空数组。 例如,如果我获取json , 则不希望由元帅将其转换为。 简单起见,我希望它是 如何完全忽略该字段

  • 我正在使用C#和regex,试图捕获外部的paren组,同时忽略内部的paren组。我有遗留生成的文本文件,其中包含数千个字符串构造,如下所示: null