JSON介绍

来源:互联网 发布:家用网络交换机的作用 编辑:程序博客网 时间:2024/06/06 02:26

JSON介绍

JSON定义
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。

JSON 语法是 JavaScript 对象表示法语法的子集。
数据在名称/值对中、数据由逗号分隔、花括号保存对象、方括号保存数组

JSON 值可以是:数字(整数或浮点数)、字符串(在双引号中)、逻辑值(true 或 false)、数组(在方括号中)、对象(在花括号中)、null

例如:

{    "name":"小强",    "age":16,    "msg":["a","b"],    "regex": "^http://.*"};



JSON.parse是将json格式的字符串转换成json对象。

复制代码
var str ='{"name":"小强","age":16,"msg":["a","b"],"regex": "^http://.*"}';var json = JSON.parse(str);console.log("name:" + json.name);console.log("msgLen:" + json.msg.length);// 结果// name:小强// msgLen:2
复制代码

备注:单引号写在{}外,每个属性名都必须用双引号。


JSON.stringify是将json对象转换成json格式的字符串。

复制代码
var json = {"name":"小强","age":16,"msg":["a","b"],"regex": "^http://.*"};var str = JSON.stringify(json);console.log("json:" + str);console.log("jsonLen:" + str.length);// 结果// json:{"name":"小强","age":16,"msg":["a","b"],"regex":"^http://.*"}// jsonLen:60
复制代码



备注:JSON.parse和JSON.stringify支持IE8及其以上版本

JSON 数组

JSON 数组在方括号中书写:

数组可包含多个对象:

{"employees": [{ "firstName":"John" , "lastName":"Doe" },{ "firstName":"Anna" , "lastName":"Smith" },{ "firstName":"Peter" , "lastName":"Jones" }]}

在上面的例子中,对象 "employees" 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。

JSON 使用 JavaScript 语法

因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。

通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:

例子

var employees = [{ "firstName":"Bill" , "lastName":"Gates" },{ "firstName":"George" , "lastName":"Bush" },{ "firstName":"Thomas" , "lastName": "Carter" }];

可以像这样访问 JavaScript 对象数组中的第一项:

employees[0].lastName;

返回的内容是:

Gates

可以像这样修改数据:

employees[0].lastName = "Jobs";

将JSON转换成数组

复制代码
function jsonToArray(obj){    var r = {key:[],value:[]};    for(var k in obj){        if(!obj.hasOwnProperty(k)){            continue;        }        r.key.push(k);        r.value.push(obj[k]);    }    return r;}var json = {"name":"小强","age":16,"msg":["a","b"],"regex": "^http://.*"};var arrJson = jsonToArray(json);console.log("regexKEY:" + arrJson.key[3]);console.log("regexVALUE:" + arrJson.value[3]);console.log("KEYLen:" + arrJson.key.length);// 结果// regexKEY: regex// regexVALUE: ^http://.*// KEYLen:4
复制代码

 简单例子:

function TestJson()       {           var jsonObj1 = { "name""张一""age": 21 };           var jsonObj2 = { "name""张二""age": 22 };           var jsonObj3 = { "name""张三""age": 23 };            jsonObj1.Geder = "男";//增加属性           alert(jsonObj1.Geder);           alert(jsonObj1["name"]);           var objArr = [];//定义           objArr.push(jsonObj1);//增加           objArr.push(jsonObj2);           objArr.push(jsonObj3);            delete objArr[0];//删除           alert(objArr.length);            for (var i = 0; i < objArr.length; i++) {//遍历               alert(objArr[i].name);            }       }

关于IE低版本可以使用插件
json官网:http://www.json.org/json-zh.html


题外话:IE低版本的浏览器使用率越来越少,建议兼容IE低本的脚本单独提出来,将兼容性代码抽离出来。用IE注释来判断是否引入js插件,js插件最好与标准名称一致,如低版本中引入JSON这个变量,也有个方法JSON.parse等等。可以改善以前的兼容性代码处理方式,将IE那部分的都转成W3C标准事件处理函数,单独为IE引入。个人见解。