`
cuisuqiang
  • 浏览: 3937969 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3652221
社区版块
存档分类
最新评论

JSON简介与JS解析JSON

    博客分类:
  • JS
阅读更多

JSON大家不会陌生,但是本人还是刚刚深入了解了一下,特作此总结。


首先什么是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)
数组(在方括号中)
对象(在花括号中)
null

JSON 文件:
JSON 文件的文件类型是 ".json"
JSON 文本的 MIME 类型是 "application/json"

 

 

对于 eval() 函数,他是JS中的一个方法,可计算某个字符串,并执行其中的的 JavaScript 代码。

该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。

如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。

可以做几个例子来说明一下他的使用:

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

 

会输出以下内容:

200
4
27

 

这就像你给了一条SQL语句然后执行返回结果一样。

对于参数的合法检测,可以使用以下代码:

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

 

 

一般来说,对于JSON的应用,都是前台使用AJAX请求,后台要返回的对象集合使用JSON来表达传递到前台

我们来做一个Servlet,他返回一个JSON字符串给前台:

package com;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
@SuppressWarnings("serial")
public class ServiceAjax extends HttpServlet {
	public ServiceAjax() {
		super();
	}
	public void destroy() {
		super.destroy();
	}
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {		
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();
		out.write("[{id:1,name:'cui'},{id:2,name:'su'},{id:3,name:'qiang'}]");
		out.flush();
		out.close();
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
	public void init() throws ServletException {
	}
}

 

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

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">    
    <title>XMLHttpRequest对象学习</title>
    <script type="text/javascript" language="javascript">
	function loadXMLDoc(){
		var xmlhttp;
		if (window.XMLHttpRequest) {
			xmlhttp=new XMLHttpRequest();
		}else {
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		xmlhttp.onreadystatechange=function() {
			if (xmlhttp.readyState==4 && xmlhttp.status==200) {
				var objs = eval(xmlhttp.responseText);
				for(i=0;i<objs.length;i++){
					var user = objs[i];
					alert(user.id + "-->" + user.name);
				}
			}
		}
		var url = "<%=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>
    <div id="myDiv"></div>
    <input type="button" name="bxml" value="Read" onclick="loadXMLDoc()" />
  </body>
</html>

 

如果你对于JS解析XML和关于JS的AJAX有任何疑惑,你可以访问:

JS跨浏览器解析XML应用

JavaScript中XMLHttpRequest对象初步使用

也许以上内容可以帮到你。

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

12
0
分享到:
评论
4 楼 milkyTea_ 2014-11-01  
写得不错;
如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。
这个能举个例子么?
3 楼 cuisuqiang 2014-04-10  
wandong01 写道
谢谢        

互相学习
2 楼 wandong01 2014-04-10  
谢谢        
1 楼 jasshine 2012-07-06  
楼主牛逼   受教了。。

相关推荐

    json3.js 【JS / JavaScript 中解析JSON的js包,JSON官方的JSON解析包】

    json3.js 【JS / JavaScript 中解析JSON的js包,JSON官方的JSON解析包】。JavaScript中解析JSON的js包,页面中引入json3.js,即可使用。 使用方法:JSON.parse(str), JSON.stringify(obj) 更多详情请参考博文: ...

    kettle解析json串

    教你如何连接数据库解析Kettle中的json串

    javascript json数据解析工具json2.js

    json2.js,包JSON-js-master.zip包,json数据解析javascript工具

    JSON解析和反解析源代码

    json解析和反解析的官方源代码,亲自测试可靠,没有BUG。

    json3.js字符解析转换

    【JavaScript中解析JSON的js包,页面中引入json3.js,即可使用】 使用方法:JSON.parse(str), JSON.stringify(obj)

    Json实体解析工具

    Json实体解析工具Json实体解析工具Json实体解析工具Json实体解析工具Json实体解析工具Json实体解析工具Json实体解析工具Json实体解析工具Json实体解析工具

    stm32使用cjson解析json字符串.zip

    JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次...

    PB解析和生成JSON

    PB解析和生成JSON,解析JSON是否成功,生成默认JSON。

    推荐.NET下JSON应用大全全解析

    JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它易于编程人员阅读和编写,同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - ...

    json解析js Tools

    json解析js Tools json解析js Tools json解析js Tools json解析js Tools

    js解析json字符串的库

    一个在js中解析json字符串为json对象的库, 在js中 使用 var json = json_parse('json字符串'); json就是解析后的json对象,比较方便的避免eval函数。如果不想引入其他过多的js库,那么使用这个库解析json字符串还是...

    解析json纯js的

    自己写着玩的 弹出框、执行状态、解析json自动赋值到table、循环读取容器内input返回json对象 纯js的

    自己实现一个简单的JSON解析器

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。相对于另一种数据交换格式 XML,JSON 有着很多优点。例如易读性更好,占用空间更少等。在 web 应用开发领域内,得益于 JavaScript 对 JSON 提供的...

    JSON2.js JSON 的解析器

    为了和IE8内置的JSON2区别开更换变量名

    js解析json代码

    js解析代码 这部分是js解析的代码

    json解析工具_32位

    绝对好的用 json解析工具 json解析 json工具 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯...

    VB解析JSON案例

    简单实用的案例,一看就能理解,内容包含解析JSON字符串和JS脚本。

    微信小程序如何调用json数据接口并解析

    开始写js,用request请求接口url,当请求成功的时候,在控制台打印一下返回的res.data数据,在控制台可以看到打印了接口数据了,在请求接口成功之后,用setData接收数据,并且需在data中声明一个接收数据的变量。...

    浅析ajax请求json数据并用js解析(示例分析).docx

    浅析ajax请求json数据并用js解析(示例分析).docx

    获取json数据并且解析

    获取聚合数据的json数据,并且解析

Global site tag (gtag.js) - Google Analytics