JSON.stringify(value, replacer, space)详解

news/2024/7/10 23:49:36 标签: jquery, json.js, JSON.stringify

JSON.stringify(obj)是常用的将js对象转换为json字符串的方法,但很少有人知道,该方法其实还有另外2个参数。


1、方法

方法定义:JSON.stringify(value, replacer, space)

参数说明:value:js对象
                  replacer:替换对象,可以是一个方法、对象或数组,将value按照替换规则展示。

                  space:填充参数,可以是数字或字符串,将value按照参数进行格式化展示。
方法说明:将value对象转换为指定格式的json文本。


2、参数value

如果不转换对象注解输出对象的效果:



使用JSON.stringify(value)的效果
js:

$(function(){
	$("#strTest").text(JSON.stringify("字符串测试"));
	var testObj = {
			name:"张三",
			age:28,
			gender:"男"
		};
	$("#objTest").text(JSON.stringify(testObj));
		
	var testArr = [{
			name:"张三",
			age:20,
			gender:"男"
		},
		{
			name:"李思",
			age:28,
			gender:"女"
		}]
	$("#arrTest").text(JSON.stringify(testArr));
})

页面效果:




3、参数replacer

参数为function(key,value),会根据函数返回值替换value中的值。

例如替换上面对象的gender为英文大写。
js:
var testObj = {
		name:"张三",
		age:28,
		gender:"man"
	};
$("#objTest").text(JSON.stringify(testObj,testReplacer));
		
var testArr = [{
		name:"张三",
		age:20,
		gender:"gril"
	},
	{
		name:"李思",
		age:28,
		gender:"gril"
	}]
$("#arrTest").text(JSON.stringify(testArr,testReplacer));
		
function testReplacer(key,value){//key为对象属性名,value为对象属性值,会遍历testObj或testArr来执行该函数
	if(key=="gender"){
		value = value.toUpperCase();
	}
	return value;
}
页面效果:




参数为object对象,并不会影响原对象。

参数为数组时,会遍历数组的值,以数组的值作为value的属性。如果value原本包含该属性,那么显示该属性,如果不包含则不显示。例如:
var name = ["name","gril","gender"];
var testObj = {
		name:"张三",
		age:28,
		gender:"man"
	};
$("#objTest").text(JSON.stringify(testObj,name));
		
var testArr = [{
		name:"张三",
		age:20,
		gender:"gril"
	},
	{
		name:"李思",
		age:28,
		gender:"gril"
	}]
$("#arrTest").text(JSON.stringify(testArr,name));

上面的name数组包含3个值,而testObj对象值包含其中的name属性和gender属性,并不存在gril属性,所以,只会显示name和gender属性。效果如下:

如果将参数改为一个对象数组,那么因为对象不是一个属性,key值为“”,所以会显示一个空对象:{}。

4、参数space

如果space参数为数字n时,value对象将被格式化,并且属性会缩进n个字符。n>10时,只会缩进10个空格,n<10时,缩进n个空格,n<=0时不进行格式化。例如:
$("#objTest").text(JSON.stringify(testObj,null,8));
$("#arrTest").text(JSON.stringify(testArr,name,8));
缩进8个空格展示。

如果space为特殊字符时,按照特殊字符格式化。
例如:"\n":每行换行。"aa":每行头部添加aa字母。
$("#objTest").text(JSON.stringify(testObj,null,"\n"));
$("#arrTest").text(JSON.stringify(testArr,name,"aa"));
效果如下:


希望能带给你帮助!


http://www.niftyadmin.cn/n/725423.html

相关文章

几个算法小题目--桶排序

1->比如给你一个数组&#xff0c;里面的数有200个&#xff0c;最大的数是1000&#xff0c;时间效率的重要性高于空间效率&#xff0c;那么你会采用哪种排序策略呢&#xff1f;能否达到O&#xff08;n&#xff09; 思路&#xff1a;对于这种问题&#xff0c;可能我们会想到很…

透明度设置

W3C设置透明度 element.style.opacity value(0-1 0代表完全透明&#xff0c;1代表不透明) IE中 element.style.filter "alpha(opacity value)" (0-100 0代表完全透明&#xff0c;100代表不透明),并且子元素如果定位后(不管相对定位&#xff0c;还是绝对定位&#…

kettle——系统信息说明

系统信息默认值说明&#xff1a; 1、系统日期(可变)&#xff1a;系统时间&#xff0c;每次访问都在改变。 2、系统日期(固定)&#xff1a;系统时间&#xff0c;有转换开始来决定。即转换开始时间 3、开始日期范围(转换)&#xff1a;根据etl日志表的信息&#xff0c;确定日期范围…

Zjnu Stadium(hdu3047带权并查集)

题意&#xff1a;一个300列的无限行的循环场地&#xff0c;a b d代表a,b顺时针相距d的距离&#xff0c;现在给你一些距离&#xff0c;判断是否有冲突&#xff0c;如果有冲突计算冲突的次数 思路&#xff1a;带权并查集 a&#xff0c;b的距离等于b到根节点的距离 - a到根节点的距…

maven中scope的作用

scope的参数如下&#xff1a; compile 默认的scope&#xff0c;表示 dependency 都可以在生命周期中使用。而且&#xff0c;这些dependencies 会传递到依赖的项目中。适用于所有阶段&#xff0c;会随着项目一起发布。即依赖的项目会参与到当前项目的编译、运行、测试以及打包发…

java中的类加载

Class实例 java在真正需要一个类时才由Java虚拟机JVM加载类&#xff0c;所谓真正需要是要通过类来构造对象或者用户自己指定要加载类。被夹在的类在java虚拟机JVM中都以一个Class实例存在。Class对象没有公开的构造器&#xff0c;Class对象有虚拟机JVM自动产生。也就是说&#…

java获取服务器信息

java获取服务器信息需要用到sigar.jar&#xff0c;但该jar在linux下依赖于libsigar-amd64-linux.so、libsigar-x86-linux.so。在window下依赖于sigar-amd64-winnt.dll、sigar-x86-winnt.dll。配置文件这存在这模拟系统命名的操作&#xff0c;可以通过这些系统命名来获取系统的参…

栈和堆:生存空间

在Java中&#xff0c;方法的调用以及方法里面声明的局部变量和参数&#xff0c;都存在于叫栈的内存块之中。当你调用一个方法的时候&#xff0c;这个方法就会放在调用栈的栈顶,也就是说放在栈顶的目前正在执行的方法。实际上被堆上栈的是堆栈块&#xff0c;它带有方法的状态&am…