JSON的六种数据类型:
- 字符串
例子:”字符串”
注意:不能使用单引号 - 数字:
例子:123.4 - 布尔值:
例子:true、false - null值:
例子:null - 对象
例子:{“name”:”sunwukong”, ”age”:18} - 数组
例子:[1,”str”,true]
在js中操作JSON:
页面实例:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="script/jquery-1.7.2.js""></script>
<script type="text/javascript">
//1.JSON对象
//属性名必须使用双引号括起来,属性和属性值之间使用冒号分隔,多个属性之间使用逗号分隔
var jsonObj = {"name":"孙悟空","age":520};
// alert(jsonObj.name);
//2.JSON数组
var jsonArray = ["猪八戒",1000,false,null,jsonObj];
//获取JSON数组中的第五个元素的age属性值
// alert(jsonArray[4].age);
//创建一个稍微复杂的JSON对象
var fzJson = {
"name":"唐僧",
"age":18,
"apprentices":[
{"name":"孙悟空"},
{"name":"小白龙"},
{"name":"猪八戒","wives":[{"name":"嫦娥","age":10000},
{"name":"高翠兰","age":16},
{"name":"某某菩萨","age":38}
]},
{"name":"沙悟净"}
]
};
//获取fzJson对象中唐僧的第三个徒弟二夫人的年龄
//alert(fzJson.apprentices[2].wives[1].age);
//将JSON对象转换为JSON字符串
var objToStr = JSON.stringify(jsonObj);
//alert(objToStr);
//声明一个JSON字符串,注意字符串里json的格式是双引号
var jsonStr = '{"name":"白骨精","age":18}';
//alert(jsonStr);
//将JSON字符串转换为JSON对象
var strToObj = JSON.parse(jsonStr);
//alert(strToObj);
$(function(){
//给按钮绑定单击事件
$("#btnId").click(function(){
//设置请求地址
var url = "JSONServlet";
//发送Ajax请求,JQuery自动转换为json对象
$.post(url,function(res){
alert(res.id+"-"+res.name+"-"+res.age);
},"json")
});
});
</script>
</head>
<body>
<button id="btnId">发送Ajax请求接收JSON格式的响应数据</button>
</body>
</html>
对象:
public class Student {
private Integer id;
private String name;
private Integer age;
public Student(Integer id, String name, Integer age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public Student() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
给前台响应JSON数据格式的Servlet:
/**
* 给前台响应JSON数据格式的Servlet
*/
public class JSONServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
//假设从数据库中查询出来了一个学生的信息
Student student = new Student(1,"白骨精",18);
//创建Gson对象
Gson gson = new Gson();
//将Student对象转换为JSON对象
String json = gson.toJson(student);
//给前台响应一个JSON字符串
//response.getWriter().write("{\"name\":\"白骨精\",\"age\":18}");
System.out.println(json);
response.getWriter().write(json);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
其他例子:
页面:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="script/jquery-1.7.2.js""></script>
<script type="text/javascript">
$(function(){
//给按钮绑定单击事件
$("#btnId").click(function(){
//设置请求地址
var url = "GetUsersServletByJSON";
//发送Ajax请求,JQuery自动转换为json对象
$.post(url,function(res){
var str = "<tr><th>Id</th><th>Username</th><th>Password</th><th>Email</th></tr>";
for(var i = 0; i < res.length; i++){
var emp = res[i];
str+="<tr align='center'><td>"
+emp.id+
"</td><td>"
+emp.username+
"</td><td>"
+emp.password+
"</td><td>"
+emp.email+
"</td></tr>"
}
$("#tb").html(str);
},"json")
});
});
</script>
</head>
<body>
<button id="btnId">发送Ajax请求接收JSON格式的响应数据</button>
<table id="tb" border="1px" align="center" width="60%" cellspacing="0px">
</table>
</body>
</html>
Servlet:
/**
* 通过发送Ajax请求查询数据库中所有的用户信息的Servlet
*/
public class GetUsersServletByJSON extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建UserDao对象
UserDao userDao = new UserDaoImpl();
//调用UserDao中获取所有用户的方法
List<User> users = userDao.getUsers();
//创建Gson对象
Gson gson = new Gson();
//将users转换为JSON字符串
String json = gson.toJson(users);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(json);
System.out.println(json);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}