手册

目录

JSON 解析

收藏304

阅读599

更新时间2025-08-07

实例 – 解析 JSON

请想象一下我们从 web 服务器接收到这段文本:

'{ "name":"Bill Gates", "age":62, "city":"Seattle"}'

请使用 JavaScript 函数 JSON.parse() 把文本转换为 JavaScript 对象:

var obj = JSON.parse('{ "name":"Bill Gates", "age":62, "city":"Seattle"}');

请确保这段文本以 JSON 格式书写,否则会出现语法错误。

请在您的页面中使用 JavaScript 对象:

实例

运行实例 »

点击 "运行实例" 按钮查看在线实例

来自服务器的 JSON

您能够通过使用 AJAX 请求从服务器请求 JSON。

只要服务器的响应是用 JSON 格式编写的,你可以将字符串解析成 JavaScript 对象。

实例

请使用 XMLHttpRequest 从服务器获取数据:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()  {
    if (this.readyState == 4 && this.status == 200) {
        myObj =  JSON.parse(this.responseText);
        document.getElementById("demo").innerHTML  = myObj.name;
    }
};
xmlhttp.open("GET", "json_demo.txt", true);
xmlhttp.send();
运行实例 »

点击 "运行实例" 按钮查看在线实例

查看 json_demo.txt

作为 JSON 的数组

在对衍生自数组的 JSON 使用 JSON.parse() 后,此方法将返回 JavaScript 数组,而不是 JavaScript 对象。

实例

从服务器返回的 JSON 是数组:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()  {
    if (this.readyState == 4 && this.status == 200) {
        myArr =  JSON.parse(this.responseText);
        document.getElementById("demo").innerHTML  = myArr[0];
    }
};
xmlhttp.open("GET", "json_demo_array.txt", true);
xmlhttp.send();
运行实例 »

点击 "运行实例" 按钮查看在线实例

查看 json_demo_array.txt

例外

解析日期

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() 把它们转换回函数。

浏览器支持

所有主流浏览器以及最新的 ECMAScript (JavaScript) 标准均包含 JSON.parse() 函数:

下表中的数字指定了完全支持 JSON.parse() 函数的首个浏览器版本:

Yes 8.0 3.5 4.0 10.0

对于更老的浏览器,以下地址中的 JavaScript 库是可用的:

https://github.com/douglascrockford/JSON-js

相关

视频

RELATED VIDEOS

更多

免费

Web前端开发极速入门
初级 Web前端开发极速入门

219920次学习

收藏

免费

前端入门_HTML5
初级 前端入门_HTML5

616946次学习

收藏

免费

30分钟学会网站布局
初级 30分钟学会网站布局

238440次学习

收藏

免费

CSS视频教程-玉女心经版
初级 CSS视频教程-玉女心经版

393054次学习

收藏

免费

独孤九贱(1)_HTML5视频教程

免费

独孤九贱(6)_jQuery视频教程

免费

独孤九贱(7)_Bootstrap视频教程

免费

独孤九贱(2)_CSS视频教程
初级 独孤九贱(2)_CSS视频教程

229605次学习

收藏

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号