The best way to convert a JSON string to a JSON object in js

Source: Internet
Author: User

JSON strings are parsed into JSON data formats in JS. There are two methods:
1. Use the eval () function.
2. Use the Function object for return parsing.

Method 1: Use the eval function to parse and use the jQuery each method to traverse
The JSON data parsing method using jQuery is used as the transmission object of jQuery asynchronous requests. The result returned by the jQuery request is a json object, which is considered in the form of a JSON string returned by the server, JSON objects encapsulated by plug-ins such as JSONObject are similar in that they are not described here.
Here we first provide a JSON string set, which is as follows:
Copy codeThe Code is as follows: var data = "{
Root:
[
{Name: '1', value: '0 '},
{Name: '000000', value: 'beijing '},
{Name: '123', value: 'tianjin '},
{Name: '000000', value: 'shanghai '},
{Name: '000000', value: 'chongqing '},
{Name: '200', value: 'weinan City '},
{Name: '000000', value: 'yan'an '},
{Name: '000000', value: 'hanzhong '},
{Name: '200', value: 'yulin '},
{Name: '123', value: 'ankang City '},
{Name: '200', value: 'shangluo City '}
]
}
";
Here, based on the data type obtained asynchronously by jQuery-json object and string, we will introduce the Processing Methods of the obtained results in two ways.
1. For the JSON string returned by the server, if jQuery asynchronous requests do not provide a type description or are accepted as strings, an object processing is required. The method is not too troublesome, is to put this string in eval () for execution once. This method is also suitable for obtaining json objects in the common ccipt mode. The following is an example:
Copy codeThe Code is as follows: var dataObj = eval ("(" + data + ")"); // convert to a json object

Why is "(" ("+ data +") ");" added to eval?
The reason is: Problems with eval itself. Json starts and ends in the form of "{}". In JS, json is treated as a statement block. Therefore, it must be forcibly converted into an expression.
The purpose of parentheses is to force the eval function to forcibly convert the expressions in parentheses into objects when processing JavaScript code, rather than executing them as statements. For example, if no outer brackets are added to the object literal {}, eval identifies the braces as the start and end mark of the JavaScript code block, then {} is considered to have executed an empty statement. The following two execution results are different:
Copy codeThe Code is as follows:
Alert (eval ("{}"); // return undefined
Alert (eval ("({})"); // return object [Object]
For this method, we can see it everywhere in JS.
For example: (function () {}) (); when performing the closure operation.
Copy codeThe Code is as follows: alert (dataObj. root. length); // output the number of root sub-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 );
})

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 does not need the eval () method to obtain the server response, because the result is already a json object. You only need to call this object directly. Here, $. the getJSON method is used as an example to describe the data processing method:
Copy codeThe Code is as follows: $. getJSON ("http://blog.snsgou.com/", {param: "snsgou"}, function (data ){
// The returned data is already a json object.
// The following operations are the same as the first case
$. Each (data. root, function (index, item ){
If (index = 0 ){
Return true; // returns the same value as countinue, and returns the same value as break.
}
Alert ("name:" + item. name + ", value:" + item. value );
});
});
Note that the eval () method in method 1 dynamically executes the strings (which may be JavaScript scripts), which can easily cause system security problems. Therefore, some third-party client script libraries that circumvent eval () can be used. For example, JSON in JavaScript provides a script library of no more than 3 K.

The second method is to use the Function object. A typical application of this method is to parse the data returned by success under the AJAX method in jQuery.
Copy codeThe Code is as follows: var json = '{"name": "CJ", "age": 18 }';

Data = (new Function ("", "return" + json ))();
In this case, data is parsed into a json object.

 
The final conclusion is:
Convert a json string to a json object and use (new Function ("return" + jsonString) (); instead of eval ('+ jsonString + ')');

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.