Before introducing the main text, let me tell you what json is.
JSON (JavaScript Object Notation) is a lightweight data exchange format, which we call JavaScript Object Notation. One of the advantages of using JSON for data transfer is that JSON is actually JavaScript. It is a text format based on the JavaScript object literal syntax subset of ECMAScript version 3. This means that you can use responseText to retrieve JSON data from the server, and then use JavaScript's eval() method to convert the JSON string into a JavaScript object. Then, using additional JavaScript, you can easily extract the data from the object without processing. DOM.
We often use javascript json when working on projects.
First of all, let’s talk about what the json string of javascript is. The json string belongs to an object of javascript and has objects corresponding to keys and values.
The general format is:
a = { a1 : 1, a2 : 'abc', a3 : 'abc', a4 : [1,2,3], a5 : function(){console.log(12)} };
The way we read this json is to traverse it through a for in loop;
The advantage of using a json string is that the data in the database can be read out in one go Save it in the form of json, and then read the content inside through javascript. This can greatly reduce the number of requests to the server and increase the loading efficiency of the front-end page.
We will encounter many problems when traversing json. The problem I encountered today is that when we write the key value of the json string as a number, the mainstream browser will not follow the json we output when traversing. The structures are output sequentially, but in order of numbers from small to large. But browsers below IE8 will output in the order we output.
For example:
a = { '1' : 1, '5' : function(){console.log(12)}, '2' : 'abc', '4' : [1,2,3], '3' : {'5' : 'abc', '6' : 'bcd'}, };
Through for in loop
for(var i in a){ console.log(a[i]); }
Chrome, firefox and other browser output: 1, abc, Object { 5="abc", 6="bcd"}, [ 1, 2, 3], function();
ie8 and the following browsers: 1, function(), abc, [1, 2, 3], Object { 5="abc", 6="bcd"};
There are two ways to solve this problem:
The first is to change the key value of the number into a string including letters or underscores;
The second is to solve the compatibility of IE, by first traversing json and then The key values are stored in an array, and then the array is sorted to loop through the array to retrieve the data in json.
Specific code:
var arr = [],sortNumber = function (a,b){ return a - b; }; for(var i in a){ arr[arr.length] = a[i]; arr.sort(sortNumber); for(var x = 0; x < arr.length; x++) { console.log(a[arr[x]]); }
The data read by the browser will be consistent. One disadvantage is that this will not be output in the json format we output, which only solves the browser compatibility issue.