默认的字符串化器还会缩小 JSON,看起来很难看,JSON.stringify也有一个内置的格式化程序!,(如果你想知道那个 null 是什么,我们稍后会谈到),在此示例中,JSON 格式为 2 个缩进空格。,我们还可以指定用于缩进的自定义字符。,JSON.stringify第二个参数,这在很大程度上是未知的。它被称为replacer,它是一个函数或数组,用于决定哪些数据保留在输出中,哪些不保留。,这是一个简单的示例,我们可以在其中隐藏password用户。,这是输出:,{“name”:”John”,”age”:30},我们可以进一步重构:,输出:,{“name”:”John”,”age”:30},还可以传递一个数组来仅获取某些键:,输出相同的东西。,这也适用于数组。如果你有一大堆蛋糕:,我们可以轻松地做同样的事情,并且替换器将应用于每个蛋糕:,我们得到这个:,[{“name”:”Chocolate Cake”},{“name”:”Vanilla Cake”},…],如果一个对象实现了该toJSON函数,JSON.stringify将使用它来对数据进行字符串化。,考虑一下:,这将输出{“numerator”:1,”denominator”:2}. 但是如果我们想用一个字符串替换它1/2呢?,进入toJSON,JSON.stringify尊重toJSON财产和产出”1/2″。,我们上面的分数示例效果很好。但是如果我们想恢复数据呢?当我们再次解析 JSON 时,如果分数能神奇地返回,那不是很酷吗?我们可以!,进入复活者!,我们可以传递第二个参数JSON.parse来指定 reviver 函数。恢复器的工作是将字符串化数据“恢复”回其原始形式。在这里,我们传递了一个 reviver,它是类的静态fromJSON属性Fraction。,在这种情况下,reviver 检查该值是否是一个有效的分数,如果是,它会创建一个新Fraction对象并返回它。,有趣的事实:此功能用于内置的 Date 对象。尝试查找Date.prototype.toJSON,这就是为什么它有效:,要恢复日期,我们可以使用JSON.parse:,与解析器一样,恢复器也可用于隐藏数据。它以相同的方式工作。,这是一个例子:,这是输出:,{ name: ‘John’, age: 30 }
© 版权声明
文章版权归作者所有,未经允许请勿转载。