就学点皮毛 是一个关注高效生活(高效办公)、工具应用推荐、软件使用技巧的网站。我们的理念是:在专业上较真,在兴趣上寻乐。

JSON

JSON 是 JS 对象的一种简单紧凑的标签。

JSON 语法

JSON 数据的表示方式是一系列成对的参数与值,参数与值由冒号分割,每对之间以逗号分隔:
{"par1":"val1","par2":"val2","par3":"val3","par4":"val4"}

把这些数据用花括号包起来,构成表示数据的 JSON 对象

    // 使用 JSON 标签定义 JSON 数据对象
    var jsonObj = {
        "par1":"val1",
        "par2":"val2",
        "par3":"val3",
        "par4":"val4"
    }
    // JSON 对象也具有属性和方法,可以用句点标签进行访问
    console.log(jsonObj.par1); // 显示 val1

注意: json 数据和 json 对象是不一样的。

JSON 数据访问及生成

使用 eval() 函数解析 JSON 数据(可能存在安全问题,不建议使用)

eval() 函数使用 JS 解释程序解析 JSON 文本来生成 JS 对象,语法如下:

    var myObj = eval('('+ jsonString +')');

用例:

    // 接收 JSON 数据
    var jsonStr = '{"par1":"val1","par2":"val2","par3":"val3","par4":"val4"}';
    // 解析 JSON 数据,创建 JSON 数据对象
    var jsonObj = eval('('+ jsonStr +')');
    // 访问数据
    console.log(jsonObj.par1);

使用浏览器对 JSON 直接支持

比较新的浏览器会创建一个名为 JSON 的 JS 对象来管理 JSON 的编码和解码。这两个方法为 stringify() 和 parse() 。

JSON.parse() 解析 JSON 数据

JSON.parse()接收一个字符串作为参数,解析它,创建一个对象,并根据字符串里发现的“参数”:“值”对设置对象的参数。以上例 jsonStr 字符串为例:

    // 解析 JSON 数据,创建对象
    var jsonObj2 = JSON.parse(jsonStr);
    // 遍历 JSON
    for(i in jsonObj2){
        console.log(i+':'+jsonObj2[i]);
    }
    // 直接访问数据
    console.log(jsonObj2.par1);
    console.log(jsonObj2['par1']);

Tips:在JS里,jsonObj2.par1 和 jsonObj2['par1'] 是相同的语法

JSON 数据序列化: JSON.stringify()

JSON 的数据序列化是指把数据转换为 JSON 数据(字符串),以便存储和传输。
JSON.stringify(Object) 方法可以创建对象的 JSON 编码字符串:

    // 首先创建一个简单的对象,并添加一些属性
    var Joe = new Object();
    Joe.age = 30;
    Joe.h = 180 ;
    Joe.name = 'joe';
    // 数据序列化
    var str2 = JSON.stringify(Joe);
    // 查看序列化后的数据
    console.log(str2);

JSON 数据类型

“参数”:“值” 对里的参数部分应遵循:

  • 不能是 JS 保留的关键字
  • 不能以数字开头
  • 除了下划线和美元符号,不能包括任何特殊字符

“值”部分可以是如下类型:

  • 数值
  • 字符串
  • 布尔值
  • 数组
  • 对象
  • null

使用 JSON 创建对象

在上面 JSON语法 中我们使用 var jsonObj = {"par1":"val1","par2":"val2","par3":"val3","par4":"val4"} 创建了对象并设置了属性,同样我们也可以添加方法,同时,“值”也可以是多种类型的数据:

    // 使用 JSON 标签定义 JSON 数据对象
    var jsonObj = {
        "par1":"val1",
        "par2":"val2",
        "par3":"val3",
        "par4":"val4",
        // 创建方法
        "jFun":function(){
            // code
        },
        // 数组数据
        "num":[1,2,3,4],
        // 对象数据
        "oobj":{"p1":1},
        // 数组+对象
        "numOb":[{"p2":2},{"p3":3}]
    }
    // 访问对象
    jsonObj.jFun();
    console.log(jsonObj.num);
    console.log(jsonObj.num[1]);
    console.log(jsonObj.oobj);
    console.log(jsonObj.oobj.p1);
    console.log(jsonObj.numOb);
    console.log(jsonObj.numOb[0].p2);
    console.log(jsonObj.numOb[0]['p2']);

全文结束

标签
分类
作者
日期

添加新评论

菜单内容