在前端开发中,我们经常需要将 JavaScript 对象转换为字符串并发送给后端服务器。这时候我们通常会使用 JSON.stringify()
方法,它可以将 JavaScript 对象序列化为一个 JSON 字符串,以便于传输和保存。
然而,在某些情况下,我们可能不希望某些属性或者值出现在生成的 JSON 字符串中。这个时候,我们可以通过一些技巧隐藏这些敏感信息,并避免暴露出我们的个人或机构的价值观。
方法一:使用 replacer 函数
JSON.stringify()
方法提供了一个可选参数 replacer
,我们可以传入一个函数来控制序列化过程中应该如何处理属性和值。这个函数接收两个参数,分别是键和值,返回值就是实际应该序列化的值。如果该函数返回 undefined
,对应的键值对将被忽略掉。
比如,假设我们有一个包含用户名和密码的对象,但是我们不想把密码泄露出去:
----- ---- - - ----- -------- --------- -------- --
我们可以使用如下的 replacer 函数来隐藏密码:
----- ---------- - -------------------- ----- ------ -- - -- ---- --- ----------- - ------ ---------- - ------ ------ --- ------------------------ -- -------------------
这样,我们就成功地隐藏了密码字段。
方法二:使用 toJSON() 方法
在 JavaScript 中,许多对象都有一个 toJSON()
方法,它返回一个用于序列化的 JSON 对象。如果存在该方法,则 JSON.stringify()
方法会调用它来生成序列化结果。因此,我们可以通过重写 toJSON()
方法来控制序列化过程中应该输出哪些属性和值。
举个例子,假设我们有一个包含用户名和密码的对象:
----- ---- - - ----- ------ --------- -------- --
我们可以通过如下方式隐藏密码:
----- -------------- - - ----- ------ ------- -------- -- - ------ - ----- --------- -- - -- ----- ---------- - ------------------------------- ------------------------ -- -----------------
这里我们重写了 toJSON()
方法,只返回了用户名。这样,在调用 JSON.stringify()
方法时,只会输出用户名,而密码则被隐藏了起来。
总结
在前端开发中,我们经常需要将 JavaScript 对象转换为字符串并发送到后端服务器。但是,有时候我们希望隐藏某些敏感信息,以避免暴露出我们的个人或机构的价值观。在这篇文章中,我们介绍了两种方法来隐藏 JSON 字符串中的某些属性或者值,分别是使用 replacer 函数和重写 toJSON() 方法。这些方法既简单又实用,希望可以对大家在前端开发中处理敏感信息时有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/14003