前端js遍历json对象方法

时间:2022-09-04 19:19:51

环境

操作系统: 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