• json2使用方法


    例子1:

     1  //直接声明json数据结构
     2 var myJSONObject = {"bindings": [
     3         {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
     4         {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
     5         {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
     6 ]
     7 };
     8 //声明字符串,可对比一下json文本与我们正常文本的区别
     9 var normalstring='[{persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}]';
    10 var jsontext='[{"persons":[{"name":"jordan","sex":"m","age":"40"}, {"name":"bryant","sex":"m","age":"28"}, {"name":"McGrady","sex":"m","age":"27"} ]}]';
    11 
    12 //调用eval函数转换为json对象,
    13 var myE = eval(normalstring);
    14 document.writeln(myE '<br><br>');
    15 //将json对象转换为字符串
    16 var text = JSON.stringify(myE);
    17 //对比转换后的json文本与声明的文本区别
    18 document.writeln('转换后的json文本:' text '<br><br>声明的json格式文本' jsontext '<br><br>声明的普通格式文本' normalstring '<br><br>');
    19 
    20 //当安全比较重要的时候使用JSON解析就好一些。JSON解析只会识别JSON文本并且它更安全,下面调用json的parse函数对文本数据转换生成json数据结构
    21 var myData = JSON.parse(jsontext);
    22 
    23 document.writeln(myData '<br><br>');
    24 
    25 //下面是对json对象的增删查改操作
    26 
    27 //声明json对象
    28 
    29 var jsonObj2={persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]};
    30 
    31 var persons=jsonObj2.persons;
    32 var str="";
    33 
    34 var person={name:"yaoMing",sex:"m",age:"26"};
    35 //以下为json对象的操作,去掉注释可以查看操作结果
    36 //jsonObj2.persons.push(person);//数组最后加一条记录
    37 //jsonObj2.persons.pop();//删除最后一项
    38 //jsonObj2.persons.shift();//删除第一项
    39 jsonObj2.persons.unshift(person);//数组最前面加一条记录 只要适合Javascript的方法都是可以用在JSON对象的数组中的!所以还有另外的方法splice( )进行crud操作! //删除
    40 //jsonObj2.persons.splice(0,2);//开始位置,删除个数
    41 //替换不删除
    42 var self={name:"tom",sex:"m",age:"24"};
    43 var brother={name:"Mike",sex:"m",age:"29"};
    44 jsonObj2.persons.splice(1,0,self,brother,self);//开始位置,删除个数,插入对象
    45 //替换并删除
    46 //jsonObj2.persons.splice(0,1,self,brother);//开始位置,删除个数,插入对象
    47 
    48 for(var i=0;i<persons.length;i ){ var cur_person=persons[i]; str =cur_person.name "'sex is " cur_person.sex " and age is " cur_person.age "<br><br>"; }
    49 document.writeln(str);
    50 //转换为json文本
    51 var myjsonobj =  JSON.stringify(jsonObj2);
    52 document.writeln(myjsonobj);

    例子2:

    JSON(JavaScript Object Notation) 是JavaScript编程语言的一个子集。正因JSON是JavaScript的一个子集,所以它可清晰的运用于此语言中。
    eval函数 JSON文本转换为对象
        为了将JSON文本转换为对象,可以使用eval函数。eval函数调用JavaScript编辑器。由于JSON是JavaScript的子集,因此编译器将正确的解析文本并产生对象结构。文本必须括在括号中避免产生JavaScript的语法歧义。
    var obj = eval('(' + JSONTest + ')');
        eval函数非常快速。它可以编译执行任何JavaScript程序,因此产生了安全性问题。当使用可信任与完善的源代码时才可以使用eval函数。这样可以更安全的解析JSON文本。使用XmlHttp的web应用,页面之间的通讯只允许同源,因此是可以信任的。但这却不是完善的。如果服务器没有严谨的JSON编码,或者没有严格的输入验证,那么可能传送包括危险脚本的无效JSON文本。eval函数将执行恶意的脚本。
    JSON解释器 JSON.parse、JSON.stringify
        使用JSON解析器可以防止像eval函数转换JSON文本为对象那样的安全隐患。JSON解析器只能辨识JSON文本,拒绝所有脚本。提供了本地JSON支持的浏览器的JSON解析器将远快于eval函数。
    目前,Firefox、Opera、IE8以上版本也提供了本地JSON支持。其中,JSON解释器提供的函数有:JSON.parse、JSON.stringify。
        对于那些并不提供本地JSON支持的浏览器可以引入脚本json2.js,来实现JSON转换功能。json2.js脚本可到https://github.com/douglascrockford/JSON-js/blob/master/json2.js页面下载。
    JSON.parse 函数
    将JSON文本转换为对象。
    JSON.parse(text[, reviver])
    参数
    text
       必选项。要转换为对象的JSON文本。
    reviver
       可选项。该参数是个替换函数。在转换中,遍历的每个节点,都将执行该函数,该函数的返回值将替代转换结果的相应节点值。
    JSON.stringify 函数
    将对象转换为JSON文本。
    JSON.stringify(value[, replacer[, space]])
    参数
    text
    必选项。要转换为JSON文本的对象。
    reviver
       可选项。该参数是个替换函数。在转换中,遍历的每个节点,都将执行该函数,该函数的返回值将替代转换结果的相应节点值。
    space
       可选项。格式化输出JSON文本缩进的空格数量。如果不提供该参数将不会格式化输出。
    参数reviver的委托类型
    reviver(key, value)
    reviver函数的中的this是当前所遍历到的节点的父节点。当所遍历的是根节点的时候,父节点是个Object对象,根节点是该对象的一个属性,属性名是空字符串。
    参数
    key
       当父节点是数组Object,key为数组索引,否则key为Object属性名。
    value
       节点值。
    注:JSON不支持循环数据结构。
    JSON.parse、JSON.stringify使用示例

     1 function InventoryItem(parm) {
     2     this.Product = parm.Product
     3     this.Quantity = parm.Quantity;
     4     this.Price = parm.Price;
     5     this.Type = parm.Type;
     6     this.Total = function () {
     7         return this.Price * this.Quantity;
     8     }
     9 }
    10 
    11 function Inventory(parm) {
    12     this.Date = parm.Date;
    13     this.Item = parm.Item;
    14     this.Type = parm.Type;
    15     this.Total = function () {
    16         var count = 0;
    17         for (var key in this.Item) {
    18             count += this.Item[key].Total();
    19         }
    20         return count;
    21     }
    22 }
    23 
    24 var inventoryJSONText = "{"Date":"2000-01-01","Item":[{"Product":"ProductOne","Quantity":"10","Price":"10","Type":"InventoryItem"},{"Product":"ProductTwo","Quantity":"100","Price":"20","Type":"InventoryItem"}],"Type":"Inventory"}";
    25 // var inventoryJSONText = "{'state':'False','info':'请先登录!!!','redirecturl':'/Login.aspx'}";
    26 //将JSON文本转换为对象,并将一般类的实例改成伪类的实例。
    27 var inventoryObject = JSON.parse(inventoryJSONText);
    28 
    29 //输出转换后对象的信息。
    30 var output = "Product		Quantity	Price	Total
    ";
    31 for (var key in inventoryObject.Item) {
    32     var item = inventoryObject.Item[key];
    33     output += item.Product + "	" + item.Quantity + "		" + item.Price + "	" + item.Total() + "
    ";
    34 }
    35 output += "					" + inventoryObject.Item.Total();
    36 alert(output);
    37 
    38 //再将inventoryObject对象转换成JSON文本。
    39 var inventoryJSONTextAgain = JSON.stringify(inventoryObject, null, 0);
    40 alert(inventoryJSONTextAgain);

     /******************************************************************************************
     *【Author】:niky
     *【Date】:2013年06月20日
     *【Notice】:
     *1、本文为原创技术文章,首发博客园个人站点(http://www.cnblogs.com/nikyxxx/archive/2010/03/26/1697109.html),转载和引用请注明作者及出处。
     *2、本文必须全文转载和引用,任何组织和个人未授权不能修改任何内容,并且未授权不可用于商业。
     *3、本声明为文章一部分,转载和引用必须包括在原文中。
     ******************************************************************************************/

  • 相关阅读:
    stress-Linux系统压力测试工具使用及系统负载很高的几种场景测试
    execsnoop-短时进程追踪工具
    走迷宫--DFS
    马踏棋盘--dfs
    查询前缀出现的次数----字典树
    找两个质数和为偶数的两个数
    煤气灶---递归
    求合力
    hdu2089---不要62(数位DP)
    轻重匹配
  • 原文地址:https://www.cnblogs.com/armyant/p/3146411.html
Copyright © 2020-2023  润新知