JavaScript遍历Json串浏览器输出的结果不统一问题

前端之家收集整理的这篇文章主要介绍了JavaScript遍历Json串浏览器输出的结果不统一问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_4030@

没有介绍正文之前先给大家说下json是什么。


@H
403_0@JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,我们称之为JavaScript对象表示法。使用JSON进行数据传输的优势之一是JSON实际上就是JavaScript。它基于ECMAScript第3版中JavaScript对象字面量语法子集的一种文本格式。这表示可以使用responseText从服务器中检索JSON数据,然后再使用JavaScript的eval()方法将JSON字符串转换成JavaScript对象,那么,使用附加JavaScript就可以很地从该对象中提取数据,而不需要处理DOM。


@H_4030@我们在做项目的时候经常会用到javascript的json。


@H
4030@首先说一下javascript的json串是什么,json串属于javascript的一个对象,有键和值对应的对象。


@H
403_0@一般的格式是:


<div class="jb51code">
<pre class="brush:js;">
a = {
a1 : 1,a2 : 'abc',a3 : 'abc',a4 : [1,2,3],a5 : function(){console.log(12)}
};

@H_403_0@我们读取这个json 的方法是通过for in 循环来遍历;

@H_403_0@使用json串的好处是可以事先把数据库中的数据一次性的读取出来存成json的形式,然后通过javascript来读取里边的属于,这样可以大大减少对服务器的请求次数增加前台页面的加载效率 。

@H_403_0@我们在遍历json的时候会遇到许多问题,我今天遇到的问题是在我们把json串的键值写成数字的情况下,在主流浏览器遍历的时候不会按照我们输出的json的结构先后输出,而是按照数字的从小到大顺序输出。但是ie8以下浏览器会按照我们输出的顺序输出

@H_403_0@例如:

@H_403_0@

通过for in循环

@H_403_0@chrome,firefox等浏览器输出:1,abc,Object { 5="abc",6="bcd"},[1,3],function();

@H_403_0@ie8以及以下浏览器:1,function(),abc,[1,3],Object { 5="abc",6="bcd"};

@H_403_0@

解决这样的问题有两种:

@H_403_0@第一:就是把数字的键值改成字符串形式的包括字母或者下划线;

@H_403_0@第二 :就是解决ie的兼容性,通过先遍历json然后把键值存入一个数组中,然后再通过数组排序来循环数组取json中的数据。

@H_403_0@具体代码

@H_403_0@浏览器读取的数据就会保持一致了,有个缺点就是这个也不会按照我们输出的json格式输出,只是解决了浏览器的兼容问题。

@H_403_0@以上所述是小编给大家介绍的JavaScript遍历Json串浏览器输出的结果不统一问题。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

原文链接:https://www.f2er.com/js/44671.html

猜你在找的JavaScript相关文章