收集json解析的四种方法分享


Posted in Javascript onJanuary 17, 2014

Json在Web开发的用处非常广泛,作为数据传递的载体,如何解析Json返回的数据是非常常用的。下面介绍下四种解析Json的方式:

Part 1

var list1 = [1,3,4];
alert(list1[1]);
var list2 = [{"name":"leamiko","xing":"lin"}];
alert(list2[0]["xing"])
alert(list2[0].xing)

Part 2

var value = {
    "china":{
        "hangzhou":{"item":"1"},
        "shanghai":{"item":"2"},
        "chengdu":{"item":"3"}
    },
    "America":{
        "aa":{"item":"1"},
        "bb":{"item":"2"}   
    },
    "Spain":{
        "dd":{"item":"1"},
        "ee":{"item":"2"},
        "ff":{"item":"3"}   
    }
};
for(var countryObj in value)
{
    document.write(countryObj + ":<br />")
    //没用的for(var cityObj in value.countryObj)
    for(var cityObj in value[countryObj])
    {
        document.write('    ' + cityObj + "<br />");
        for(var itemObj in value[countryObj][cityObj])
        {
            document.write("      "+ itemObj + value[countryObj][cityObj][itemObj] +"<br />")   
        }
    }   
}  

解释:

countryObj 为value对象的一个属性明,value[countryObj] 为value对象的属性值 这里为一个json对象比如b,value[countryObj][cityObj]为josn对象b的属性值 它也是一个json对象,于是 value[countryObj][cityObj]["item"]便可以取到json对象暂时成为c的值,或者 value[countryObj][cityObj].item。

总之分清是json还是array这是很关键的。

Part 3

var value2 = {
    "china":[
        {"name":"hangzhou", "item":"1"},
        {"name":"shanghai", "item":"2"},
        {"name":"sichuan", "item":"3"}
    ],
    "America":[
        {"name":"aa", "item":"12"},
        {"name":"bb", "item":"2"}
    ],
    "Spain":[
        {"name":"cc", "item":"1"},
        {"name":"dd", "item":"23"},
        {"name":"ee", "item":"3"}
    ]
};
for (var countryObj in value2)
{
    document.write(countryObj + ":<br />")   
    for (var cityObj in value2[countryObj])
    {
        //可以用document.write("  " + value2[countryObj][cityObj].item + "<br />");
        document.write(cityObj + "  " + value2[countryObj][cityObj]["name"] + "<br />" );   
    }
}

解释:

countryObj 为value2对象的属性名,value2[countryObj] 为value2对象属性值 在本例中它是一个数组,cityObj 是数组的一个元素,它又是另外一个json对象,于是,value2[countryObj][cityObj]["name"]就访问到该对象的 name的属性值,也可以通过 value2[countryObj][cityObj].name 来访问该属性值。

Part 4

var value2 = {
    "china":[
        {"name":"hangzhou", "item":"1"},
        {"name":"shanghai", "item":"2"},
        {"name":"sichuan", "item":"3"}
    ],
    "America":[
        {"name":"aa", "item":"12"},
        {"name":"bb", "item":"2"}
    ],
    "Spain":[
        {"name":"cc", "item":"1"},
        {"name":"dd", "item":"23"},
        {"name":"ee", "item":"3"}
    ]
};    for (var countryObj in value2)
    {
        document.write(countryObj + ":<br />")   
        //document.write("  " + value2[countryObj].length);
        for (var i = 0;i < value2[countryObj].length; i++)
        {
            document.write("  " + value2[countryObj][i]["name"] + "<br />");   
        }
    }

解释:

countryObj value2对象的属性名,value2[countryObj] 属性值 本例中是一个数组,value2[countryObj].length 数组的长度,value2[countryObj][i]数组的项 == json对象。

value2[countryObj][i]["name"] 取得name的值,也可以用value2[countryObj][i].name 来取得name的值。

Javascript 相关文章推荐
js获取div高度的代码
Aug 09 Javascript
Javascript Throttle &amp; Debounce应用介绍
Mar 19 Javascript
jQuery之Deferred对象详解
Sep 04 Javascript
javascript的switch用法注意事项分析
Feb 02 Javascript
详解javascript事件冒泡
Jan 09 Javascript
requireJS使用指南
Apr 27 Javascript
Bootstrap文件上传组件之bootstrap fileinput
Nov 25 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
Feb 15 Javascript
原生js实现拖拽功能基本思路详解
Apr 18 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
Aug 13 Javascript
Webpack 4如何动态切割JS注入文件名详解
Jul 09 Javascript
教你使用vscode 搭建react-native开发环境
Jul 07 Javascript
javascript在子页面中函数无法调试问题解决方法
Jan 17 #Javascript
ie7+背景透明文字不透明超级简单的实现方法
Jan 17 #Javascript
用js控制组织结构图可以任意拖拽到指定位置
Jan 17 #Javascript
Jquery 获取对象的几种方式介绍
Jan 17 #Javascript
在javascript中如何得到中英文混合字符串的长度
Jan 17 #Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
Jan 17 #Javascript
Js判断CSS文件加载完毕的具体实现
Jan 17 #Javascript
You might like
php下删除一篇文章生成的多个静态页面
2010/08/08 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
JavaScript触发器详解
2007/03/10 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
Python+Opencv识别两张相似图片
2020/03/23 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
对Python使用mfcc的两种方式详解
2019/01/09 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
python实现广度优先搜索过程解析
2019/10/19 Python
python实现超市商品销售管理系统
2019/10/25 Python
Python图像处理二值化方法实例汇总
2020/07/24 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
文明寄语大全
2014/04/11 职场文书
设计师求职信模板
2014/05/06 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
员工团队活动方案
2014/08/28 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
普通党员对照检查材料
2014/09/24 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
品德与社会教学反思
2016/02/24 职场文书
详解Django中 render() 函数的使用方法
2021/04/22 Python
nginx日志格式分析和修改
2022/04/28 Servers