JavaScript 中 JSON.stringify 中的第二个参数

     2023-03-05     150

关键词:

【中文标题】JavaScript 中 JSON.stringify 中的第二个参数【英文标题】:Second argument in JSON.stringify in JavaScript 【发布时间】:2013-07-06 10:20:20 【问题描述】:

在 JavaScript 的 JSON.stringify() 函数中,我偶尔会看到如下语法:

JSON.stringify(obj, null, 4)

但是,我不知道第二个参数 null 应该做什么。据我所知,上述函数将一个对象作为其第一个参数,并将其转换为字符串变量。在这种情况下,第三个参数 4 缩进并漂亮地打印结果字符串对象。但是即使我阅读了官方文档上的解释,我也看不到第二个论点试图做什么......那么这个论点是做什么的呢?还是只是为了接受第三个论点? (但我认为该函数应该同时采用参数名称及其参数,例如JSON.stringify(obj, space=4)。我不确定 JavaScript 中是否允许这种语法,如果不是,请原谅我。但我不知道'首先不知道我的期望是正确的,所以还是想提出一个问题)。

谢谢。

【问题讨论】:

【参考方案1】:

第二个参数可以是字符串化时执行替换的函数。

null 或未定义的第二个参数表示您要使用标准 字符串化,无需任何定制。

来自https://developer.mozilla.org/en-US/docs/Using_native_JSON#The_replacer_pa

从 Firefox 3.5.4 开始,JSON.stringify() 提供了额外的 通过使用可选参数的定制能力。这 语法是:

jsonString = JSON.stringify(value [, replacer [, space]])

value 要转换为 JSON 字符串的 JavaScript 对象。

replacer 一个改变字符串化过程行为的函数,或者 用作白名单的字符串和数字对象数组 选择要包含在 JSON 字符串。如果此值为 null 或未提供,则所有属性 该对象包含在生成的 JSON 字符串中。

space 一个字符串或数字对象,用于在输出中插入空格 出于可读性目的的 JSON 字符串。如果这是一个数字,它 指示用作空格的空格字符数;这 如果大于该数字,则数字上限为 10。小于 1 的值 表示不应使用空格。如果这是一个字符串,则该字符串 (或字符串的前 10 个字符,如果它比那个长) 用作空白。如果未提供此参数(或 null),不使用空格。替换参数

replacer 参数可以是函数或数组。作为一个 函数,它有两个参数,键和值是 字符串化。找到密钥的对象被提供为 replacer 的这个参数。最初它被一个空键调用 表示被字符串化的对象,然后调用它 被字符串化的对象或数组的每个属性。这应该 返回应该添加到 JSON 字符串的值,如下所示:

如果返回一个数字,则对应于该数字的字符串是 添加到 JSON 字符串时用作属性的值。如果 您返回一个字符串,该字符串用作属性的值 将其添加到 JSON 字符串中。如果你返回一个布尔值,“真”或 在添加时,酌情使用“false”作为属性的值 它到 JSON 字符串。如果您返回任何其他对象,则该对象是 递归字符串化为 JSON 字符串,调用替换器 函数对每个属性,除非对象是一个函数,其中 情况下没有任何内容添加到 JSON 字符串中。如果返回未定义,则 属性不包含在输出 JSON 字符串中。注意:您不能 使用 replacer 函数从数组中删除值。如果你 return undefined 或者一个函数然后 null 被使用。

例子

function censor(key, value) 
  if (typeof(value) == "string") 
    return undefined;
  
  return value;


var foo = foundation: "Mozilla", 
           model: "box", 
           week: 45, 
           transport: "car", 
           month: 7;
var jsonString = JSON.stringify(foo, censor);
The resulting JSON string is "week":45,"month":7.

如果 replacer 是一个数组,则数组的值表示该数组的名称 对象中应包含在结果 JSON 中的属性 字符串。

【讨论】:

【参考方案2】:

在 JavaScript 中不传递第二个参数就无法传递第三个参数。 所以nullreplacer函数的占位符,当你需要传递space时。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

【讨论】:

【参考方案3】:
   JSON.stringify(value[, replacer[, space]])

replacer 一个改变字符串化过程行为的函数,或一个字符串和数字对象数组,用作选择/过滤属性的白名单要包含在 JSON 字符串中的值对象。如果此值为 null 或未提供,则对象的所有属性都包含在生成的 JSON 字符串中。

replacer 参数可以是函数也可以是数组。

作为一个函数,它有两个参数:键和被字符串化的值。找到密钥的对象作为替换器的 this 参数提供。

最初,replacer 函数以一个空字符串作为键来调用,表示正在字符串化的对象。然后为正在字符串化的对象或数组上的每个属性调用它。

【讨论】:

使用 json_decode 从 json 获取字符串数组

...。在前端我有:varjsonArray=["String1","String2"]awaitnewFile(JSON.stringi 查看详情

前端存储loaclforage

...。 2、仅支持字符串,如果是存对象还需要将对象JSON.stringi 查看详情

fetch函数的使用-常见问题

fetch的使用:总体格式:Fetch(‘url’,{mode:‘cors’,method:’POST’,headers:{        ‘Content-type’:‘application/x-www-form-urlencoded;charset=UTF-8’,【需要指定】},Body:JSON.stringi 查看详情

javascript - 使用另一个函数中的变量 javascript - '今天未在对象中定义'

】javascript-使用另一个函数中的变量javascript-\\\'今天未在对象中定义\\\'【英文标题】:javascript-useavariablefromanotherfunctionjavascript-\'todayisnotdefinedatObject\'javascript-使用另一个函数中的变量javascript-\'今天未在对象中定义\'【发布时间】... 查看详情

javascript数组中的javascript(代码片段)

查看详情

javascript在javascript中排序文本(代码片段)

查看详情

javascript在javascript中复制数组(代码片段)

查看详情

javascript在javascript中捕获组(代码片段)

查看详情

javascript中this

  听燕十八老师的《JavaScript高级》课程,对JavaScript中this的笔记记录!  js中函数的四种调用方式:  1.作为普通的函数来调用时,this的值指向window;在ECMASCRIPT5标准中,如果this为null,则解释成undefined。  <scripttype="te... 查看详情

javascript在javascript中删除字符串中的html标记(代码片段)

查看详情

在 javascript 中检索 javascript 注释,或者,如何在 js 中解析 js?

】在javascript中检索javascript注释,或者,如何在js中解析js?【英文标题】:Retrievejavascriptcommentsinjavascript,or,howdoIparsejsinjs?【发布时间】:2011-05-1218:49:58【问题描述】:我正在寻找一种从某些(其他)javascript代码访问javascriptcmets... 查看详情

javascript在javascript中测试偶数/奇数(代码片段)

查看详情

javascript也许monad在javascript中(代码片段)

查看详情

javascript在javascript中计算动画数量(代码片段)

查看详情

javascript如何在javascript中迭代对象?(代码片段)

查看详情

javascript在javascript中搜索对象数组(代码片段)

查看详情

javascript在javascript中调试xslt(代码片段)

查看详情

javascript中数组的概念以及创建

 先给大家分享一些JavaScript的相关资料: ​​认识JavaScript到初体验​​​​JavaScript注释以及输入输出语句​​​​JavaScript变量的使用、语法扩展、命名规范​​​​JavaScript数据类型简介以及简单的数据类型​​​​Java... 查看详情