收集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 相关文章推荐
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
Sep 15 Javascript
IE中createElement需要注意的一个问题
Jul 13 Javascript
50个比较实用jQuery代码段
Sep 18 Javascript
给html超链接设置事件不使用href来完成跳
Apr 20 Javascript
jQuery实现页面滚动时动态加载内容的方法
Mar 20 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
Jul 21 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
Oct 31 Javascript
基于jquery二维码生成插件qrcode
Jan 07 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
Jul 12 Javascript
关于Stream和Buffer的相互转换详解
Jul 26 Javascript
vue filter 完美时间日期格式的代码
Aug 14 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
Oct 30 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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
PHP二维数组的去重问题解析
2011/07/17 PHP
用php简单实现加减乘除计算器
2014/01/06 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
php常用字符函数实例小结
2016/12/29 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
javascript与cookie 的问题详解
2013/11/11 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
2013/11/12 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
vue实现登录拦截
2020/06/29 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
[01:15:18]2014 DOTA2国际邀请赛中国区预选赛 LGD VS Speed Gaming.cn
2014/05/22 DOTA
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
python学习入门细节知识点
2018/03/29 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
政协会议宣传标语
2014/10/09 职场文书
校园开放日新闻稿
2015/07/17 职场文书