JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。
JSON.stringify(value[, replacer[, space]])
参数说明:
一个表示给定值的JSON字符串。
var str = {"name":"", "site":"https://www..cn"}
str_pretty1 = JSON.stringify(str)
document.write( "只有一个参数情况:" );
document.write( "<br>" );
document.write("<pre>" + str_pretty1 + "</pre>" );
document.write( "<br>" );
str_pretty2 = JSON.stringify(str, null, 4) //使用四个空格缩进
document.write( "使用参数情况:" );
document.write( "<br>" );
document.write("<pre>" + str_pretty2 + "</pre>" ); // pre 用于格式化输出
关于序列化,有下面五点注意事项:
JSON.stringify({}); // "{}"
JSON.stringify(true); // "true"
JSON.stringify("foo"); // ""foo""
JSON.stringify([1, "false", false]); // "[1,"false",false]"
JSON.stringify({ x: 5 }); // "{"x":5}"
JSON.stringify({x: 5, y: 6});
// "{"x":5,"y":6}"
JSON.stringify([new Number(1), new String("false"), new Boolean(false)]);
// "[1,"false",false]"
JSON.stringify({x: undefined, y: Object, z: Symbol("")});
// "{}"
JSON.stringify([undefined, Object, Symbol("")]);
// "[null,null,null]"
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";
}
}
);
// undefined
// 不可枚举的属性默认会被忽略:
JSON.stringify(
Object.create(
null,
{
x: { value: "x", enumerable: false },
y: { value: "y", enumerable: true }
}
)
);
// "{"y":"y"}"
replacer参数可以是一个函数或者一个数组。作为函数,它有两个参数,键(key)值(value)都会被序列化。
注意: 不能用replacer方法,从数组中移除值(values),如若返回undefined或者一个函数,将会被null取代。
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);
JSON序列化结果为 {"week":45,"month":7}.
如果replacer是一个数组,数组的值代表将被序列化成JSON字符串的属性名。
JSON.stringify(foo, ["week", "month"]);
// "{"week":45,"month":7}", 只保留“week”和“month”属性值。
space 参数用来控制结果字符串里面的间距。如果是一个数字, 则在字符串化时每一级别会比上一级别缩进多这个数字值的空格(最多10个空格);如果是一个字符串,则每一级别会比上一级别多缩进用该字符串(或该字符串的前十个字符)。
JSON.stringify({ a: 2 }, null, " "); // "{n "a": 2n}"
使用制表符(t)来缩进:
JSON.stringify({ uno: 1, dos : 2 }, null, "t")
// "{
// "uno": 1,
// "dos": 2
// }"
如果一个被序列化的对象拥有 toJSON 方法,那么该 toJSON 方法就会覆盖该对象默认的序列化行为:不是那个对象被序列化,而是调用 toJSON 方法后的返回值会被序列化,例如:
var obj = {
foo: "foo",
toJSON: function () {
return "bar";
}
};
JSON.stringify(obj); // ""bar""
JSON.stringify({x: obj}); // "{"x":"bar"}"
Javascript面向对象设计 -Javascript基本类型基本的数据类型有:undefined,boolean,number,string,null。基本类型的访问是按...
JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。表单数据经常需要使用 JavaScript 来验证其正确...