教程 > json 教程 > 阅读:31

json.parse——迹忆客-ag捕鱼王app官网

json 通常用于与服务端交换数据。

在接收服务器数据时一般是字符串。

我们可以使用 json.parse() 方法将数据转换为 javascript 对象。

语法

json.parse(text[, reviver])

参数说明:

  • text:必需, 一个有效的 json 字符串。
  • reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。

json 解析实例

例如我们从服务器接收了以下数据:

{ "name":"jiyik", "alexa":10000, "site":"www.jiyik.com" }

我们使用 json.parse() 方法处理以上数据,将其转换为 javascript 对象:

var obj = json.parse('{ "name":"jiyik", "alexa":10000, "site":"www.jiyik.com" }');

解析前要确保你的数据是标准的 json 格式,否则会解析出错。 你可以使用我们的在线工具检测:。

解析完成后,我们就可以在网页上使用 json 数据了:


 

从服务端接收 json 数据

我们可以使用 ajax 从服务器请求 json 数据,并解析为 javascript 对象。

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 数据

如果从服务端接收的是数组的 json 数据,则 json.parse 会将其转换为 javascript 数组:

var xmlhttp = new xmlhttprequest();
xmlhttp.onreadystatechange = function() {
    if (this.readystate == 4 && this.status == 200) {
        myarr = json.parse(this.responsetext);
        document.getelementbyid("demo").innerhtml = myarr[1];
    }
};
xmlhttp.open("get", "json_demo_array.txt", true);
xmlhttp.send();

异常

解析数据

json 不能存储 date 对象。

如果你需要存储 date 对象,需要将其转换为字符串。

之后再将字符串转换为 date 对象。

var text = '{ "name":"jiyik", "initdate":"2021-05-20", "site":"www.jiyik.com"}';
var obj = json.parse(text);
obj.initdate = new date(obj.initdate);
 
document.getelementbyid("demo").innerhtml = obj.name   "创建日期: "   obj.initdate;

我们可以启用 json.parse 的第二个参数 reviver,一个转换结果的函数,对象的每个成员调用此函数。

var text = '{ "name":"jiyik", "initdate":"2021-05-20", "site":"www.jiyik.com"}';
var obj = json.parse(text, function (key, value) {
    if (key == "initdate") {
        return new date(value);
    } else {
        return value;
}});
 
document.getelementbyid("demo").innerhtml = obj.name   "创建日期:"   obj.initdate;

解析函数

json 不允许包含函数,但你可以将函数作为字符串存储,之后再将字符串转换为函数。

var text = '{ "name":"runoob", "alexa":"function () {return 100000;}", "site":"www.jiyik.com"}';
var obj = json.parse(text);
obj.alexa = eval("("   obj.alexa   ")");
 
document.getelementbyid("demo").innerhtml = obj.name   " alexa 排名:"   obj.alexa();

不建议在 json 中使用函数。


浏览器支持

主流浏览器都支持 json.parse() 函数:

  • firefox 3.5
  • internet explorer 8
  • chrome
  • opera 10
  • safari 4

查看笔记

扫码一下
查看教程更方便
网站地图