收集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格式化数字金额用逗号隔开保留两位小数
Oct 18 Javascript
JQuery实现倒计时按钮具体方法
Nov 14 Javascript
js Array操作的最简短最容易理解方法
Dec 09 Javascript
用IE重起计算机或者关机的示例代码
Mar 10 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
Apr 05 Javascript
浅析JavaScript动画模拟拖拽原理
Dec 09 Javascript
基于bootstrap的选择框插件icheck
Dec 23 Javascript
vue-quill-editor实现图片上传功能
Aug 08 Javascript
javascript 面向对象实战思想分享
Sep 07 Javascript
再谈Angular4 脏值检测(性能优化)
Apr 23 Javascript
javascript显示动态时间的方法汇总
Jul 06 Javascript
微信小程序后端(java)开发流程的详细步骤
Nov 13 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对mongodb的扩展(初出茅庐)
2012/11/11 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
PHP微框架Dispatch简介
2014/06/12 PHP
js表数据排序 sort table data
2009/02/18 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
php跨域调用json的例子
2013/11/13 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
javascript禁止超链接跳转的方法
2016/02/02 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
Python实现求笛卡尔乘积的方法
2017/09/16 Python
Python-OpenCV基本操作方法详解
2018/04/02 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
python实现拼图小游戏
2020/02/22 Python
Baby Tulai澳大利亚:美国婴儿背带品牌
2018/10/15 全球购物
人事文员岗位职责
2014/02/16 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
授权委托书范本
2014/04/03 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
不错的求职信范文
2014/07/20 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
道歉信范文
2015/05/12 职场文书
会计主管竞聘书
2015/09/15 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL