前端js遍历json对象方法

  • Post author:
  • Post category:其他


环境

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



版权声明:本文为u013066244原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。