JSON语法是一种用于传输和生成数据的协定,很类似于C家族的语言,所以很容易被C家族的语言所解析。
对象:对象包含再{}之间
属性:采用Key-Value对来表示。属性之间使用逗号分开。  string : value 
数组:数组存放再[]之间   [ elements ] 
元素:元素之间用逗号分开
值:值可以是字符串,数字,对象,数组,true,false,null

json的官方文档:http://www.json.org/json-zh.html

JSON的优点:
轻量级的数据交换格式

人们读写更加容易

易于机器的解析和生成

能够通过JavaScript中eval()函数解析JSON

JSON支持多语言。包括:ActionScript, C, C#, ColdFusion, E, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, Rebol, Ruby, and Lua.

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!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=UTF-8">
<title>ajax处理json数据演示示例</title>
<script type="text/javascript"> function ask4(){
//1创建ajax对象
var xhr=null;
if(window.XMLHttpRequest){//高版本IE,火狐等
xhr = new XMLHttpRequest();
}else{//低版本IE
xhr = new ActiveXObject("Microft.XMLHttp");
}
//2请求地址
var url = "<c:url value='/JsonServlet3'/>"; //post方式,请求参数在 send()方法的实参
//3设置访问方式
xhr.open("POST", url, true); //4设置访问成功返回后的操作
xhr.onreadystatechange = function(){
if(xhr.readyState==4){
if(xhr.status==200){
var txt = xhr.responseText;
//alert(txt);
///////////解析后台返回的json串/////////////
//js中的eval()方法的功能: 校验参数文本串符合js中哪一种数据类型,并把其转换成对应类型的对象---json
var users = eval( "("+txt+")" ); //得到一个json对象
for(var i=0; i<users.length; i++){
alert(users[i].id+","+users[i].name+","+users[i].age)
}
}
}
}; xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded" );
//5发送
xhr.send(null);
}
</script>
</head>
<body> <input type="button" onclick="ask4();" value="ajax请求后台数据(后台--用fastjson工具封装json的方式)"> <br/> </body>
</html>
package cn.hncu.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
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 com.alibaba.fastjson.JSON; import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import cn.hncu.domain.User; @WebServlet("/JsonServlet3")
public class JsonServlet3 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//按理应该调用service、dao层并从数据库中把数据读取出来,这里模拟了...
List<User> users = new ArrayList<User>();
users.add( new User("U001","Jack",22));
users.add( new User("U010","张三",12));
users.add( new User("U002","Rose",23));
request.setAttribute("users", users); //利用fastjson的工具为我们把后台的List<User>类型的数据封装成json格式串,发送前端
//json串格式: [{name:"Jack",id:"U001",age:22},{...},{...}]
//转List-json※※※
String json = JSON.toJSONString(users);
System.out.println(json); //转Map-json
Map<String, Object> map = new HashMap<String, Object>();
map.put("addr", "湖南");
map.put("id", "P001");
map.put("sex", "男");
map.put("age", 20);
map.put("friend", new User("U001","Jack",22));
String str = JSON.toJSONString(map);
System.out.println(str); //发给前端
response.setCharacterEncoding("utf-8");
response.getWriter().print(json);
}
}
//利用apache的工具为我们把后台的List<User>类型的数据封装成json格式串,发送前端
//json串格式: [{name:"Jack",id:"U001",age:22},{...},{...}]
//转List-json
JSONArray jsonObj=JSONArray.fromObject(users);//转换List的方法
String json = jsonObj.toString();
System.out.println(json); //转Map-json
Map<String, Object> map = new HashMap<String, Object>();
map.put("addr", "湖南");
map.put("id", "P001");
map.put("sex", "男");
map.put("age", 20);
map.put("friend", new User("U001","Jack",22));
JSONObject obj = JSONObject.fromObject(map);
System.out.println(obj.toString()); //发给前端
response.setCharacterEncoding("utf-8");
response.getWriter().print(json); 这里还可以采用apache中工具把数据封装成json字符串,还可以在后台把我们的List<User>类型的数据手动封装成json格式串,发送前端

//json串格式: [{name:"Jack",id:"U001",age:22},{...},{...}]


这里使用Json工具的时候要导包----->fastjson-1.1.17.jar----->json-lib-2.3-jdk15.jar

最新文章

  1. 用vue2 +vue-router2 + es6 +webpack 高仿饿了么app(干货满满)
  2. UEditor演变的迷你版编辑器
  3. freemarker 图片输出、多张图片输出(图片重复原因及解决)
  4. Mita和Maui
  5. 短小强悍的JavaScript异步调用库
  6. [ES6] 22. Const
  7. Android 颜色渲染(十) ComposeShader组合渲染
  8. .gitignore模板
  9. 查找最小的K个元素,使用最大堆。
  10. C# Assembly类_反射
  11. JavaScript 开发经验整理
  12. (转)ikvmc的使用
  13. [ 夜间模式 ] NightVersion
  14. cookie 和 session的区别
  15. [LeetCode] 18. 四数之和
  16. 7K - find your present (2)
  17. java和python对比----实例化的对象属性:
  18. Nginx+Tomcat反向代理利用certbot实现https
  19. Android 之 assets目录和raw目录
  20. Knockout学习之表单绑定器(下)

热门文章

  1. [JZOJ3382] [NOIP2013模拟] 七夕祭 解题报告
  2. 如何启动和关闭MySQL?(四)
  3. 一些 &lt;link&gt; 标记分享
  4. 写给自己的Java程序员学习路线图_转载
  5. 排序算法(Apex 语言)
  6. 图像处理是用的数据类型uint8,double
  7. iOS开发——捕获崩溃信息
  8. css columns 与overflow结合的问题
  9. KM HDU 3718
  10. 零基础学python-5.6 数字位操作与其它工具