收集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 相关文章推荐
解决FLASH需要点击激活的代码
Dec 20 Javascript
List all the Databases on a SQL Server
Jun 21 Javascript
jQuery 操作下拉列表框实现代码
Feb 22 Javascript
onbeforeunload与onunload事件异同点总结
Jun 24 Javascript
js获取select默认选中的Option并不是当前选中值
May 07 Javascript
JavaScript中的setUTCDate()方法使用详解
Jun 11 Javascript
js中setTimeout的妙用--防止循环超时
Mar 06 Javascript
javascript基本常用排序算法解析
Sep 27 Javascript
JavaScript实现获取select下拉框中第一个值的方法
Feb 06 Javascript
微信小程序实现简单跑马灯效果
May 26 Javascript
vuex存储token示例
Nov 11 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
Apr 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
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
非常好的php目录导航文件代码
2006/10/09 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
php常用的url处理函数总结
2014/11/19 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
jquery获取节点名称
2015/04/26 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
Python实现的质因式分解算法示例
2018/05/03 Python
python递归全排列实现方法
2018/08/18 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
德购商城:德国进口直邮商城
2017/06/13 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
幼儿园中班开学寄语
2014/04/03 职场文书
指导教师评语
2014/04/26 职场文书
媒体宣传策划方案
2014/05/25 职场文书
启动仪式策划方案
2014/06/14 职场文书
法律进社区活动总结
2015/05/07 职场文书
初三毕业感言
2015/07/31 职场文书
百日宴上的祝酒词
2015/08/10 职场文书
MySql学习笔记之事务隔离级别详解
2021/05/12 MySQL