JSON stringify() - JSON字符串化

JSON.stringify() 函数,顾名思义,将 JavaScript 值转换为序列化的 JSON 字符串.

JSON.stringify() 可以选择使用替换函数 来使用自定义逻辑替换值.

1. 语法

JSON.stringify() 方法的语法是:

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

1.1. 方法参数

  1. value (必需)– 需要转换为 JSON 字符串的 JavaScript 对象.
  2. replacer (可选) – 改变字符串化过程行为的函数。如果未提供替换函数,则对象的所有属性都将包含在生成的 JSON 字符串中.
  3. space (可选) – 用于缩进。用于将空格插入到输出 JSON 字符串中以提高可读性的字符串或数字.

    如果这是一个数字,则表示用作空白的空格字符数.

2. JSON.stringify() 示例

console.log( JSON.stringify({ x: 5, y: 6 }) );
console.log( JSON.stringify({ x: 5, y: 6 }, null, ' ') ); //with space

程序输出.

{"x":5,"y":6}

{
"x": 5,
"y": 6
}

3. JSON.stringify() 替换函数示例

var unmaskedData = { "name":"Lokesh", "accountNumber":"3044444444", "city":"New York"};

var maskedData = JSON.stringify( unmaskedData, maskInfo );

function maskInfo (key, value) {
	var maskedValue = value;
	if (key == "accountNumber")
	{
		if(value && value.length > 5) {
			maskedValue = "*" + maskedValue.substring(value.length - 4, value.length);
		} else {
			maskedValue = "****";
		}
	}
	return maskedValue;
}

程序输出.

{
"name": "Lokesh",
"accountNumber": "*4444", //Masked account number
"city": "New York"
}

阅读更多:替换函数的使用.

4. 处理未定义的值

JSON.stringify() 使用未定义的值时执行以下操作之一:

  • 如果该值是对象的一部分,则省略该值
  • 如果该值属于数组,则将该值转换为 null

在给定的示例中,序列化的 JSON 中省略了name。此外,数组admins中的undefined将转换为 null.

var siteInfo = {
"name" : undefined,
"users" : [
		[ "admins", "1", "2" , undefined],
		[ "editors", "4", "5" , "6"],
	]
}

console.log( JSON.stringify(siteInfo) );

程序输出.

{"users":[ ["admins","1","2",null], ["editors","4","5","6"] ]}