JSON的学习与使用 (2)

也可以通过 for 来循环访问数组。

var myObj, i, x = "";
myObj = {
    "name":"网站",
    "num":3,
    "sites":[ "Google""Runoob""Taobao" ]
};

for (i = 0; i < myObj.sites.length; i++) {
    x += myObj.sites[i] + "<br>";
}

javaScript 中的 for-in 类似于 Java 中的 foreach 。

修改数组元素

可以通过索引值来修改数组元素。

myObj.sites[1] = "Github";

 

删除数组元素

使用 delete 来删除数组元素

delete myObj.sites[1];

这里需要注意 delete 并没有彻底删除元素,而是删除它的值,仍然会保留空间。运算符 delete 只是将该值设置为 undefined,而不会影响数组的长度。如果想要实现彻底删除,需要使用 splice() 方法。

var myObj, i, x = "";
myObj = {
    "name":"网站",
    "num":3,
    "sites":[ "Google""Runoob""Taobao" ]
};
delete myObj.sites[1];

x = "sites.length = " + myObj.sites.length + "<br><br>";

for (i=0;i<myObj.sites.length;i++) {
    console.log(i + ":" + myObj.sites[i]);
    x += i + " " + myObj.sites[i] + "<br>";
}

document.getElementById("demo").innerHTML = x;

运行结果:
0:Google
1:undefined
2:Taobao
myObj.sites.splice(1,1);

运行结果:
0:Google
1:Taobao
JSON.parse()

JSON 通常与服务端交换数据,接收服务器传输的数据时一般是字符串,我们可以通过 JSON.parse() 方法将数据转换为 JavaScipt 对象。

具体使用

var obj = JSON.parse('{"name":"关注公众号:小李不秃","age":18,"money":null}');
console.log(obj.name + ":" + obj.age + ":" + obj.money)

运行结果:关注公众号:小李不秃:18null

JSON 存 Date 对象,需要将其转换为字符串,之后再将字符串转换为 Date 对象。

var text = '{ "name":"小李不秃", "initDate":"2020-1-17"}';
var obj = JSON.parse(text, function (key, value{
    if (key == "initDate") {
        return new Date(value);
    } else {
        return value;
}});

console.log(obj.name + ":" + obj.initDate);

运行结果:小李不秃:Fri Jan 17 2020 00:00:00 GMT+0800 (中国标准时间)
JSON.stringify()

JSON 在向服务端传输的数据一般是字符串,所以我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。

具体使用

var obj = {"name":"xiaoli""area":"china""money":null};
console.log(obj);
var myJSON = JSON.stringify(obj);
console.log(myJSON);

运行结果

JSON的学习与使用

eval

对于服务器返回的 JSON 字符串,如果 jQuery 异步请求没做类型说明,或者以字符串方式接收,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于 eval() 中执行一次。这种方式也适合以普通 javascipt 方式获取 json 对象,以下举例说明:

var u = eval('('+user+')');

为什么要 eval 这里要添加 ('('+user+')') 呢?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzfjp.html