扫码一下
查看教程更方便
json 通常用于与服务端交换数据。
在接收服务器数据时一般是字符串。
我们可以使用 json.parse() 方法将数据转换为 javascript 对象。
json.parse(text[, reviver])
参数说明:
例如我们从服务器接收了以下数据:
{ "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 数据了:
我们可以使用 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.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() 函数: