Js and jquery parses json and array formats in detail
- 2020-03-30 01:17:41
- OfStack
Before parsing, we must figure out a few concepts: what are the differences and contact points between arrays, associative arrays, and json?
I. concept introduction
An array of 1.
Grammar:
ECMAScript v3 specifies the syntax for array direct quantities, and JavaScript 1.2 and JScript 3.0 implement it. You can create and initialize an array by placing a comma-separated list of expressions in square brackets. The values of these expressions become array elements. Such as:
Var a = [1, true, 'ABC '];
See the API for specific actions.
Ps: must be separated by square brackets.
2. Associative arrays
1. Grammar:
Var myhash= {" key1 ":" val1 ", "key2" : "val2"}; / / obj
2. The var
Myhash = {key1: "val1", key2: "val2"}; / / obj - can also
Ps: it's almost the same as json, but the json format is much more rigorous (the key-value pairs inside must use double quotes), but json can only be used as a format standard and must be converted into associative array objects (obj) if you want to manipulate it.
2. Easy operation
1. Add keys to the Hash associative array
// add a newkey, newkey, and the key value is newval
Myhash newkey "] [" = "newval";
2. Delete the existing key values of the Hash associative array
// deletes a key, newkey, and the corresponding newval disappears
The delete myhash newkey "] [";
3. Traverse the Hash associative array
// traverses the entire hash array
For (key in myhash) {
Val = myhash [key];
}
4. Get the value
Methods 1. Myhash. Key1
Way 2. Myhash. Key2
3. The json
Format requirements:
{" key1 ", "val1", "key2" : "val2"}; // strictly in this format, the operations can follow the operations of the associative array
Two. A few key points in front and background interaction
1. When the data sent by the server is not a single json, but multiple jjson, the array and associative array should be used to assemble the string
For example: var objs = [{id: 1, name: "n_1"}, {id: 2, name: 'n_2}].
2. The data from the server to the client is just a string from start to finish, so it can be converted into a js executable object with eval() in order for it to perform the necessary operations in js.
Therefore, the $.parsejson () provided in jQuey is limited. In the case mentioned in 1 above, you must use eval () to convert it, and then pass $.each (objs, function (I, o) {... }) to operate
Three. Specific example code
Page code:
<body>
<input type="button" value="send ajax json" onclick="sendAjaxByjson();"/>
<input type="button" value="send ajax array" onclick="sendAjaxByarray();"/>
</body>
<script type="text/javascript">
function sendAjaxByjson(){
$.post("json",{},function(data){
var obj=data;
alert(typeof obj);//string
//Var a = eval (obj); Don't understand, do not comment will report an error..
var strToobj=$.parseJSON(obj);
alert(strToobj.name);
alert(typeof strToobj)//obj
var obja={'name':'techbirds','age':'23','sex':'male'};
alert(typeof obja);//obj
alert(obja['name']+":"+obja.age);
delete obja['name'];
});
}
function sendAjaxByarray(){
$.post("array",{},function(data){
var str=data;
alert(typeof str);//string
alert(typeof eval(str));//object
var obja=[1,2,3,4,5];
alert(typeof obja);//object
});
}
</script>
Background code:
@Override
protected void service(HttpServletRequest req, HttpServletResponse reps)
throws ServletException, IOException {
Map<String, Object> jsonMap=new HashMap<String, Object>();
jsonMap.put("name", "techbirds");
jsonMap.put("age", 23);
jsonMap.put("sex", "male");
reps.getWriter().print(JSONObject.fromObject(jsonMap).toString());
reps.getWriter().flush();
reps.getWriter().close();
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse reps)
throws ServletException, IOException {
String array="[1,2,3,4,5,6]";
reps.getWriter().print(array);
reps.getWriter().flush();
reps.getWriter().close();
}