JSON入门详解

JavaScript入门经典第5版-第八章-JSON简介

@(Web)

JSON是什么

  1. 是JavaScript Object Notation的缩写,发音Jason [ˈdʒeɪsən]
  2. 一种JS的简单紧凑的标签,可以转换:对象 字符串。
  3. 在JSON中,对象以普通JS代码表示,可利用JS自动解析。
  4. 数据表示方式:
    • 参数-值pair
    • 参数与值的分隔符:冒号
    • pair间分隔符:逗号
    • 最终将pair序列用大括号包装,表示JSON**对象**
  5. 举例:
var jsonObj = {
    "parm0": "value0",
    "parm1": "value1",
    "parm2": "value2"
}
  1. JSON对象具有属性和方法,可用句点访问。如访问JSON对象中的属性:jsonObj.parm0//访问value0
  2. 任何能够以系列”参数”:”值”pair表示的数据都可以用JSON

访问JSON数据

去序列化

  1. 去序列化:将字符串转化为JS代码

使用eval()函数

  1. 使用eval()函数,示例如下:
    var user = '{"username": "gdymind","location":"China"}';
    var userObj = eval('(' + user + ')');
    alert(userObj.username);

注意:上面的字符串一定要加括号,防止含义不明确。
3. eval()用法:
- 参数是表达式,计算值,如:var x = eval(3*4);。则x为12
- 参数是是若干JS语句,则执行语句,如:eval("a = 1; document.write(a)")

浏览器直接支持

  1. 浏览器创建一个JS对象——JSON来对JSON进行编码和解码,该对象有两个方法:stringify()parse()
  2. parse():参数为字符串,返回值为对象,如
var Gdymind = '{"gender":"male","weight": 130, "favourite":"Computer Science"}';
var obj = JSON.parse(Gdymind);
var out = "";
for(i in obj) {
    out += i + "=" + obj[i] + "\n";
}
alert(out);

运行结果如下:

序列化

  1. 将对象转化为字符串,便于网络传输。
  2. 使用JSON.stringify()方法进行序列化。
  3. 示例:
var Gdymind = new Object();
Gdymind.gender = "male";
Gdymind.weight = 130;
Gdymind.favourite = "Computer Science";

alert(JSON.stringrify("Gdymind"));

运行结果如下:

数据类型

  1. 参数命名规范:
    • 不能为JS关键字
    • 不能以数字开头
    • 不能包含特殊字符,但可以包含下划线和美元符号
  2. 的类型:数值,字符串,布尔值,数组,对象,null。
  3. Date,Error,Math和Function数据类型JSON不能识别,此时要转成其他数据类型。

map

JS里不支持map(映射,关联数组),只能myArray[0]myArray[1]这样访问,使用JSON可以“模拟”map,如前面例子中可以用Gdymind["gender"]访问Gdymind对象的gender属性。

使用JSON创建对象

  1. 使用JSON标签表示对象时,

    • 将对象包在大括号
    • “参数”: “值”表示属性
    • 匿名函数表示方法
  2. 示例:

var Gdymind = {
    "username": "default",
    "location": "China",
    "height": 130,
    "setName" function(newName) {
        this.userName = newName;
    }
}

var newName = "Gdymind";
Gdymind.setName(newName);

alert(Gdymind.userName);

运行效果如下:

  1. 属性可以是数组:
 var bookList = {
     "booklist": [
         "Introduction to Algorithm",
         "Data Structrue",
         "Machine Learning"
     ]
 }
  1. JSON对象里可以嵌套其他对象

JSON的安全性

使用eval()的缺点:
- 可以执行任意JS代码
- 解析速度慢

因此建议使用浏览器中的JSON解析器(使用JSON.parse()JSON.stringify())。

文档

  1. REF4627
  2. JSON官网

猜你喜欢

转载自blog.csdn.net/gdymind/article/details/78385556