JSON对象遍历
来源:互联网 发布:去日本必买的东西知乎 编辑:程序博客网 时间:2024/06/05 02:44
<div id="out">输出区域</div>
1. 简单的JSON对象进行遍历
// 遍历简单json对象 function traverseJsonSimpleObj(){ var jsonObj = {"name": "kevin", "age": 27, "sex": "男", "city": "shenzhen"}; for(var key in jsonObj){ var html = "<p>" html += (key + ' : ' + jsonObj[key]); html += "</p>"; $("#out").append(html); } }
2. 遍历json数组,元素为json对象
function traverseJsonArray(){ var jsonArray = [{"name": "kevin", "age": 27, "sex": "男", "city": "shenzhen"}, {"name": "kevin2", "age": 28, "sex": "男", "city": "beijing"}]; //alert('JSON.stringify(jsonArray) = ' + JSON.stringify(jsonArray)); for(var i=0; i<jsonArray.length; i++){ var jsonObj = jsonArray[i]; for(var key in jsonObj){ var html = "<p>" html += (key + ' : ' + jsonObj[key]); html += "</p>"; $("#out").append(html); } $("#out").append("-----------------------------------------------------"); } }
3. 深度遍历复合Json结构数据
JSON对象里面可以嵌套多层对象(数组或对象),嵌套层数未知
/** * 深度遍历 * 复合的Json结构数据,JSON对象里面可以嵌套多层对象(数组或对象) */ function deepTraverse(json){ // 1. 变量为json对象:将key输出,value进行递归 if(isType(json, "Object")){ for(var key in json){ $("#out").append(key + ' : '); if(isType(json[key], "Array") || isType(json[key], "Object")){ $("#out").append("下面为子项内容<br/>"); } deepTraverse(json[key]); } } // 2. 变量为json数组:逐个元素递归 else if(isType(json, "Array")){ for(var i=0; i<json.length; i++){ var jsonObj = json[i]; deepTraverse(jsonObj); // 遍历数组中的元素(为json对象)后输出:分隔线+一个换行符 if(isType(jsonObj, "Object")){ $("#out").append("------------------------<br/>"); } } } // 3. 变量为简单数据类型:直接输出(递归函数的终止条件) else if(isType(json, "String") || isType(json, "Number") || isType(json,"Boolean") || isType(json,"Null")){ $("#out").append(json); $("#out").append("<br/>"); } }
【说明】递归函数中的【步骤一】和【步骤三】形成一个完整的键值映射输出,发生递归的场景为1和2。
// 辅助函数,JS判断变量类型/** * 判断类型 * @param obj 判断的变量 * @param type 预期的类型 */ function isType(obj,type){ return Object.prototype.toString.call(obj) ==="[object "+type+"]"; }
4. 测试
(4.1) 测试 isType(obj, type)方法
function testType(){ console.log(isType([],"Array")); console.log(isType(1,"Number")); console.log(isType("","String")); console.log(isType(new Date(),"Date")); console.log(isType(function(){},"Function")); console.log(isType(new RegExp(),"RegExp")); console.log(isType({},"Object")); console.log(isType(true,"Boolean")); console.log(isType(null,"Null")); console.log(isType(undefined,"Undefined")); }
(4.2) 测试 JSON数据的遍历
var json1 = {"options":[{"text":"王家湾","value":null},{"text":"李家湾","value":true},{"text":"邵家湾","value":13}]}; var simpleJson = {"name": "kevin", "age": 27, "sex": "男", "city": "shenzhen"}; var jsonArray = [{"name": "kevin", "age": 27, "sex": "男", "city": "shenzhen"}, {"name": "kevin2", "age": 28, "sex": "男", "city": "beijing"}]; var complexJson = {"中国南方": {"珠三角": [{"城市名": "深圳", "发展年限": 25, "简称": "鹏城"}, {"城市名": "广州", "发展年限": 60, "简称": "羊城"}, {"城市名": "珠江", "发展年限": 40, "简称": "珠城"}] }, "华中地区": {"长三角": [{"城市名": "武汉", "发展年限": 80, "简称": "火炉"}, {"城市名": "宜昌", "发展年限": 79, "简称": "宜家"}, {"城市名": "咢州", "发展年限": 78, "简称": "小咢"}] }}; $(function(){ //traverseJsonSimpleObj(); //traverseJsonArray(); deepTraverse(simpleJson); $("#out").append("<hr/>"); deepTraverse(jsonArray); $("#out").append("<hr/>"); deepTraverse(complexJson); $("#out").append("<hr/>"); deepTraverse(json1); $("#out").append("<hr/>");});
0 0
- jQuery遍历JSON对象
- 遍历读取Json对象
- jQuery 遍历 JSON 对象
- jQuery 遍历 JSON 对象
- jQuery 遍历 JSON 对象
- jQuery 遍历 JSON 对象
- Json对象遍历
- json对象的遍历
- coffeescript遍历json对象
- java遍历json对象
- jQuery 遍历 JSON 对象
- $.each遍历json对象
- $.each遍历json对象
- JSON对象遍历
- Javascript遍历json对象
- jquery遍历json对象
- JQuery遍历JSON对象
- $.each遍历json对象
- Missing Number
- redis获取自增长序号
- java并发:Semaphore 的使用
- java.lang.ClassNotFoundException: org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver
- leetcode Binary Tree Right Side View
- JSON对象遍历
- php导出excel(多种方法)
- 【C Primer Plus】【课后习题】第二章C语言概述
- 自定义数字键盘(固定button键盘)
- Linux守护进程(init.d和xinetd)
- java 二维码工具类(二维码生成 解析)
- JavaScript平稳退化
- Mybatis 动态sql
- Java中的static关键字解析