前端js遍历json对象方法

环境

操作系统: win7


情形

最近遇到这么一个情况,后台使用LinkedHashMap处理好数据,在使用renderJson()返回数据的时候发现,数据的原有顺序没有了,后来才知道renderJson()方法底层使用Gson据网上说是使用HashMap,所以是无序的。

后来,我后台处理采用List<Map>的方式来返回数据,顺序有了,前端遍历的时候,遇到困难。
最开始我是这么遍历的:

for(var ld in data){//list<map>
    for(var key in ld){
        str += "<tr><td>"+ key +"</td><td>"+ ld2[key] +"</td></tr>";
    }
}

结果拼接出来的结果是:key为0, ld2[key]为Object。上面写法我是按照java那套思路来写的,后来发现js的遍历方法还是和java有区别的。

for(var ld in data){//list<map>
//在java中ld是具体某个map
//在js中ld仅仅只是list数组的下标,要获取某个map,需要这么写:data[ld]

所以上面的代码需要这么写:

for(var ld in data){//list<map>
    var ld2 = data[ld];
    for(var key in ld2){
        str += "<tr><td>"+ key +"</td><td>"+ ld2[key] +"</td></tr>";
    }
}

这样就OK啦,但是我返回的map里面有日期,它长这个样:Jun 7, 2017 1:40:26 PM。结果,js处理这个时间太蛋疼了,虽然网上有解决方法,但是我没有成功。最后我是在后台把时间转成相应格式的字符串。

数据类型和Json格式

看到大神的一篇文章:
里面有句话:

从结构上看,所有的数据(data)最终都可以分解成三种类型:

第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如”北京”这个单独的词。

第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如”北京,上海”。

第三种类型是映射(mapping),也就是一个名/值对(Name/value),即数据有一个名称,还有一个与之相对应的值,这又称作散列(hash)或字典(dictionary),比如”首都:北京”。

数据类型和Json格式

深入理解 JSON

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山鬼谣me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值