学习大数据——JSON对象和JSON字符串之间的转换

JSON的六种数据类型:

  1. 字符串
    例子:”字符串”
    注意:不能使用单引号
  2. 数字:
    例子:123.4
  3. 布尔值:
    例子:true、false
  4. null值:
    例子:null
  5. 对象
    例子:{“name”:”sunwukong”, ”age”:18}
  6. 数组
    例子:[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);
	}

}
发布了37 篇原创文章 · 获赞 7 · 访问量 690

猜你喜欢

转载自blog.csdn.net/qq_40394792/article/details/104278071
今日推荐