Home >Web Front-end >JS Tutorial >Introduction to points to note when parsing JSON with jqueyeval

Introduction to points to note when parsing JSON with jqueyeval

黄舟
黄舟Original
2016-12-16 10:45:331327browse

There are generally two ways to parse JSON strings into JSON data format in JS:

1. One is to use the eval() function.

2. Use Function object to perform return analysis.

Use eval function to parse, and use jquery's each method to traverse

Use jquery to parse JSON data, as the transmission object of jquery asynchronous request, the result returned after jquery request is a json object, and the server is considered here The format of returning a string in JSON format is similar to the JSON object encapsulated by plug-ins such as JSONObject, and will not be explained here.
The JSON string set is first given here. The string set is as follows:

var data=" {
root:
[
{name:'1',value:'0'},
{name:'6101', value:'Beijing'},
{name:'6102',value:'Tianjin'},
{name:'6103',value:'Shanghai'},
{name:'6104',value: 'Chongqing City'},
{name:'6105',value:'Weinan City'},
{name:'6106',value:'Yan'an City'},
{name:'6107',value:'Hanzhong City'},
{name:'6108',value:'Yulin City'},
{name:'6109',value:'Ankang City'},
{name:'6110',value:'Shangluo City' }
]
}";

Based on the data types obtained asynchronously by jquery - json objects and strings, we will introduce the result processing methods obtained in two ways.

1. For the JSON string returned by the server, if the jquery asynchronous request does not specify the type or is accepted in string form, then it needs to be objectified. The method is not too troublesome, that is, put the string in eval( ). This method is also suitable for obtaining json objects in the ordinary javascript method. The following is an example:

var dataObj=eval("("+data+")");//Convert to json object
Why do you need to add "(" to eval here? ("+data+")");//"?

The reason is: the problem of eval itself. Since json starts and ends with "{}", it will be processed as a statement block in JS, so it must be forced to be converted into an expression.

The purpose of adding parentheses is to force the eval function to convert the expression in the parentheses (exPRession) into an object instead of executing it as a statement when processing Javascript code. For example, take the object literal {}. If no outer brackets are added, then eval will recognize the braces as the beginning and end marks of the JavaScript code block, and {} will be considered to execute an empty statement. So the following two execution results are different:

alert(eval("{}"); // return undefined alert(eval("({})");// return object[Object]

For this This writing method can be seen everywhere in JS, such as: (function()) {}(); When doing closure operations, etc.

alert(dataObj.root.length);//Output the child of root. Number of objects $.each(dataObj.root,fucntion(idx,item){

if(idx==0){

return true;
}
//Output the name and value of each root sub-object alert("name: "+item.name+",value:"+item.value);
})


Note: For general js to generate json objects, you only need to replace the $.each() method with a for statement, nothing else Change.

2. For the JSON string returned by the server, if the jquery asynchronous request sets the type (usually this configuration attribute) to "json", or uses the $.getJSON() method to obtain the server return, then there is no need to eval () method, because the result obtained at this time is already a json object, you only need to call the object directly. Here, the $.getJSON method is used as an example to illustrate the data processing method:

$.getJSON("http:// www.phpzixue.cn/",{param:"gaoyusi"},function(data){

//The data returned here is already a json object//The following other operations are the same as the first case $.each(data.root ,function(idx,item){

if(idx==0){
return true;//Same as countinue, return false the same as break }
alert("name:"+item.name+",value:"+item. value);
});
});


What needs special attention here is that the eval() method in method 1 dynamically executes the string (possibly a js script), which can easily cause system security Problem. So you can use some third-party client script libraries that avoid eval(). For example, JSON in JavaScript provides a script library of no more than 3k. The second way to parse is to use Function objects. A typical application is the analysis of returned data such as success under the Ajax method in JQUERY

var json='{"name":"CJ","age":18}';
data =(new Function(" ","return "+json))();

The data at this time is a json object that will be parsed into a json object.

The above is the content of the attention points in jqueyeval parsing JSON. Please pay attention to more related articles. PHP Chinese website (www.php.cn)!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn