首先什么是JSON:JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言JSON 具有自我描述性,更易理解 JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言如何解析:JavaScript程序能够使用内建的 eval() 函数用 JSON 数据来生成原生的 JavaScript。主流浏览器都是支持该函数的。类似 XML:JSON 是纯文本 JSON 具有“自我描述性”(人类可读) JSON 具有层级结构(值中存在值) JSON 可通过 JavaScript 进行解析 JSON 数据可使用 AJAX 进行传输相比 XML 的不同之处:没有结束标签 更短 读写的速度更快 能够使用内建的 JavaScript eval() 方法进行解析 使用数组 不使用保留字JSON 语法规则:数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组JSON 值可以是:数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true 或 false) 数组(在方括号中) 对象(在花括号中) nullJSON 文件:JSON 文件的文件类型是 ".json" JSON 文本的 MIME 类型是 "application/json"

对于 eval() 函数,他是JS中的一个方法,可计算某个字符串,并执行其中的的 JavaScript 代码。该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。可以做几个例子来说明一下他的使用:

<scripttype="text/javascript"> eval("x=10;y=20;document.write(x*y)") document.write(eval("2+2")) varx=10 document.write(eval(x+17)) </script>

会输出以下内容:

200 4 27

这就像你给了一条SQL语句然后执行返回结果一样。对于参数的合法检测,可以使用以下代码:

try{ alert("Result:"+eval(prompt("Enteranexpression:",""))); }catch(exception){ alert(exception); }

一般来说,对于JSON的应用,都是前台使用AJAX请求,后台要返回的对象集合使用JSON来表达传递到前台。我们来做一个Servlet,他返回一个JSON字符串给前台:

packagecom; importjava.io.*; importjavax.servlet.*; importjavax.servlet.http.*; @SuppressWarnings("serial") publicclassServiceAjaxextendsHttpServlet{ publicServiceAjax(){ super(); } publicvoiddestroy(){ super.destroy(); } publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriterout=response.getWriter(); out.write("[{id:1,name:'cui'},{id:2,name:'su'},{id:3,name:'qiang'}]"); out.flush(); out.close(); } publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ doGet(request,response); } publicvoidinit()throwsServletException{ } }

前台接收到返回的字符后使用eval()进行解析,然后弹出其内容:

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"> <html> <head> <basehref="<%=basePath%>"> <title>XMLHttpRequest对象学习</title> <scripttype="text/javascript"language="javascript"> functionloadXMLDoc(){ varxmlhttp; if(window.XMLHttpRequest){ xmlhttp=newXMLHttpRequest(); }else{ xmlhttp=newActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4&&xmlhttp.status==200){ varobjs=eval(xmlhttp.responseText); for(i=0;i<objs.length;i++){ varuser=objs[i]; alert(user.id+"-->"+user.name); } } } varurl="<%=basePath%>ServiceAjax"; xmlhttp.open("POST",url,true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8"); //增加time随机参数,防止读取缓存 xmlhttp.send("time="++Math.random()); } </script> </head> <body> <divid="myDiv"></div> <inputtype="button"name="bxml"value="Read"onclick="loadXMLDoc()"/> </body> </html>

如果你对于JS解析XML和关于JS的AJAX有任何疑惑,你可以参考我博客的其他文章。

声明:有的资源均来自网络转载,版权归原作者所有,如有侵犯到您的权益 请联系邮箱:our333@126.com我们将配合处理!

原文地址:JSON简介与JS解析JSON发布于2021-11-25 16:31:01