例外
解析日期
JSON 中不允许日期对象。
如果您需要包含日期,请写为字符串。
之后您可以将其转换回日期对象:
实例
把字符串转换为日期:var text = '{ "name":"Bill Gates", "birth":"1955-10-28", "city":"Seattle"}';var obj = JSON.parse(text);obj.birth = new Date(obj.birth); document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
或者您可以已使用 JSON.parse() 函数的第二个参数,被称为 reviver。
这个 reviver 参数是函数,在返回值之前,它会检查每个属性。
实例
将字符串转换为日期,使用 reviver 函数:var text = '{ "name":"Bill Gates", "birth":"1955-10-28", "city":"Seattle"}';var obj = JSON.parse(text, function (key, value) { if (key == "birth") { return new Date(value); } else { return value; }}); document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
解析函数
JSON 中不允许函数。
如果您需要包含函数,请把它写作字符串。
稍后您可以把它转换回函数:
实例
把字符串转换为函数:var text = '{ "name":"Bill Gates", "age":"function () {return 62;}", "city":"Seattle"}';var obj = JSON.parse(text);obj.age = eval("(" + obj.age + ")"); document.getElementById("demo").innerHTML = obj.name + ", " + obj.age();
您应该避免在 JSON 中使用函数,函数会丢失它们的作用域,而且您还需要使用 eval() 把它们转换回函数。