JSON:JavaScript 对象表示法(JavaScript Object Notation)。根据这个定义,须要稍微了解JavaScript对象的格式javascript
var obj={
"name":"liming",
"age":12
}
JSON 是存储和交换文本信息的语法。相似 XML。
JSON 比 XML 更小、更快,更易解析。html
什么是 JSON ?java
JSON 使用 JavaScript 语法来描述数据对象,可是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不一样的编程语言。jquery
JSON - 转换为 JavaScript 对象web
小程序:ajax
<p>
name:<span id="jname"></span><br/>
age:<span id="jage"></span><br/>
address:<span id="jaddress"></span><br>
<script type="text/javascript"> var JSONObject={ "name":"BIll gates", "address":"fifth avenue new york 666", "age":56 }; document.getElementById('jname').innerHTML=JSONObject.name document.getElementById('jaddress').innerHTML=JSONObject.address document.getElementById('jage').innerHTML=JSONObject.age </script>
</p>
JSON语法:编程
JSON 语法是 JavaScript 对象表示法语法的子集。json
JSON 值
JSON 值能够是:小程序
JSON 使用 JavaScript 语法数组
var employees=[
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
];
访问第1项
employees[0].firstName
JSON 文件
JSON 文件的文件类型是 ".json" JSON 文本的 MIME 类型是 "application/json"
把 JSON 文本转换为 JavaScript 对象
JSON 最多见的用法之一,是从 web 服务器上读取 JSON 数据(做为文件或做为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,而后在网页中使用该数据。
<p>
name:<span id="jname"></span><br/>
age:<span id="jage"></span><br/>
address:<span id="jaddress"></span><br>
<script type="text/javascript"> var txt='{"name":"BIll gates","address":"new york","age":"56"}'; txt=eval("("+txt+")"); document.getElementById('jname').innerHTML=txt.name document.getElementById('jaddress').innerHTML=txt.address document.getElementById('jage').innerHTML=txt.age </script>
</p>
上面将文本格式转换成了JSON对象。
因为 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。
eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,而后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误
在与后台交互的时候,若是后台传回的数据不是JSON格式的数据,或者数据格式有问题,那么前台将没法得到正确的数据。
前台(这里是JSP页面):
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script src="js/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript"> function getJson(){ alert("call getjson"); $.getJSON("GetJsonServlet",function(data){ $.each(data,function(i,value){ alert(value); }); }); } function jsonGet(){ $.ajax({ dataType:"json", url:"GetJsonServlet", success:function(data){ alert("succeed"); } }); } </script>
<p>
name:<span id="jname"></span><br/>
age:<span id="jage"></span><br/>
address:<span id="jaddress"></span><br>
<script type="text/javascript"> var JSONObject={ "name":"BIll gates", "address":"fifth avenue new york 666", "age":56 }; var txt='{"name":"BIll gates","address":"new york","age":"56"}'; txt=eval("("+txt+")"); document.getElementById('jname').innerHTML=txt.name document.getElementById('jaddress').innerHTML=txt.address document.getElementById('jage').innerHTML=txt.age </script>
</p>
<a href="javascript:getJson();">getJson</a>
<a href="javascript:jsonGet();">getJson</a>
</body>
</html>
jQuery.getJSON( url [, data ] [, success ] )
url
Type: String
A string containing the URL to which the request is sent.
data
Type: PlainObject or String
A plain object or string that is sent to the server with the request.
success
Type: Function( PlainObject data, String textStatus, jqXHR jqXHR )
A callback function that is executed if the request succeeds.
----------
$.ajax({
dataType: "json",
url: url,
data: data,
success: success
});
上面两个方法是比较经常使用的前台异步传输
后台(servlet):
import java.awt.List; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @WebServlet("/GetNameServlet") public class GetJsonServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * Default constructor. */ public GetJsonServlet() { // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType( "application/json"); System.out.println("123"); Map<String,String>map=new HashMap<>(); map.put("name", "liming"); map.put("age", "12"); ArrayList<String> listString=new ArrayList<>(); listString.add("name"); listString.add("age"); JSONArray jsonObj=new JSONArray(); jsonObj.addAll(listString); PrintWriter out =response.getWriter(); System.out.println(jsonObj); out.println(jsonObj);//"{\"age\":12,\"name\":14}"或者"[12,23,34,45]" //这里是将数据转化成JSON格式,不然前台获取数据会出问题 out.flush(); out.close(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }