json.stringify()用于将JavaScript对象或值转换为JSON字符串,如果指定了一个replacer函数,则可以选择性地替换值,或者指定的replacer是数组,则可选择性地仅包含数组指定的属性。
相关推荐:《javascript视频教程》
JavaScript JSON.stringify()
JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。
语法
1 | JSON.stringify(value[, replacer[, space]])
|
Salin selepas log masuk
参数说明:
value:必需, 要转换的 JavaScript 值(通常为对象或数组)。
replacer:可选。用于转换结果的函数或数组。
space:可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。
返回值:
返回包含 JSON 文本的字符串。
实例说明
注意:以下的输出结果都是string类型的,为了容易看就没有用单引号‘’表明是字符串类型
1、只有一个参数
参数为对象:
1 2 3 4 5 6 | var students = new Array();
students[0] = "pika" ;
students[1] = "hello" ;
students[2] = "hey" ;
var json = JSON.stringify(students);
alert(json);
|
Salin selepas log masuk
输出结果:
如果不用JSON.stringify()函数,直接alert(students),那么
输出结果:
从这里到对比可以比较直观的看出JSON.stringify()函数的作用啦
看一下其他例子:
1 2 3 4 5 6 7 8 9 10 11 | JSON.stringify({});
JSON.stringify( true );
JSON.stringify( "foo" );
JSON.stringify([1, "false" , false ]);
JSON.stringify({ x: 5 });
JSON.stringify({x: 5, y: 6});
JSON.stringify([ new Number(1), new String( "false" ), new Boolean( false )]);
|
Salin selepas log masuk
从这些例子中可以看出:布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值
再看一下其他例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | JSON.stringify({x: undefined, y: Object, z: Symbol( "" )});
JSON.stringify([undefined, Object, Symbol( "" )]);
JSON.stringify({[Symbol( "foo" )]: "foo" });
JSON.stringify({[Symbol. for ( "foo" )]: "foo" }, [Symbol. for ( "foo" )]);
JSON.stringify(
{[Symbol. for ( "foo" )]: "foo" },
function (k, v) {
if ( typeof k === "symbol" ){
return "a symbol" ;
}
}
);
|
Salin selepas log masuk
从这些例子中可以看出:undefined、任意的函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 null(出现在数组中时)
再看最后一个例子
1 2 3 4 5 6 7 8 9 | JSON.stringify(
Object.create(
null ,
{
x: { value: & #39;x', enumerable: false },
y: { value: & #39;y', enumerable: true }
}
)
);
|
Salin selepas log masuk
从例子中可以看出:不可枚举的属性会被忽略
2、有两个参数,第二个参数为函数
函数例子:
1 2 3 4 5 6 | function replacer(key, value) {
if ( typeof value === "string" ) {
return undefined;
}
return value;
}
|
Salin selepas log masuk
可以看出有一个key值,一个value值,还记得一开始说的第二个参数作key值吗?
实例:
1 2 3 4 5 6 7 8 9 10 | function replacer(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, replacer);
|
Salin selepas log masuk
就是把第一个值传去函数进行相关的处理
2、有两个参数,第二个参数为数组
第一个参数为数组
1 2 3 4 5 6 7 8 9 10 11 | var students = new Array();
students[0] = "pika" ;
students[1] = "hello" ;
students[2] = "hey" ;
var stu= new Array();
stu[0] = "how" ;
stu[1] = "are" ;
stu[2] = "u" ;
var json = JSON.stringify(students,stu);
alert(json);
|
Salin selepas log masuk
结果是只有第一个值序列化了,第二个被忽略了
第一个参数为对象
1 2 3 4 5 6 7 8 9 10 | var students = new Object();
students.name = "pika" ;
students.age = 19;
students.qq = "12345678" ;
var stu= new Array();
stu[0] = "name" ;
stu[1] = "qq" ;
var json = JSON.stringify(students,stu);
alert(json);
|
Salin selepas log masuk
数组的值代表将被序列化成JSON字符串的属性名
stu数组没有“age”,所以students对象的“age”属性没有显示
有三个参数
前面说到第三个参数就是用来缩进或者直接添加字符串在序列化对象的前面,所以直接看例子就行啦,注意最多只能10个缩进或字符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | JSON.stringify({ a: 2 }, null , " " );
JSON.stringify({ uno: 1, dos : 2 }, null , & #39;\t')
var students = new Object();
students.name = "pika" ;
students.age = 19;
students.qq = "12345678" ;
var stu= new Array();
stu[0] = "name" ;
stu[1] = "qq" ;
var json = JSON.stringify(students,stu, "test" )
alert(json);
|
Salin selepas log masuk
总结
最后来总结一下,JSON.stringify()函数是用来序列化对象的,无论输入什么,输出的都是字符串类型,可以按自己的需求来定制如何序列化,输出结果是怎样的格式
更多编程相关知识,请访问:编程学习!!
Atas ialah kandungan terperinci json.stringify()是干嘛的. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!