json的实际使用

json是一种数据格式,在http协议中使用json数据格式非常常见,其他的数据格式比如xml格式,xml应用更为广泛了,堪称web的世界语言。

json和xml对比起来就是可读性差,但是在js领域有绝对优势,xml呢又应用多年更为广泛。

本章使用json-lib进行解析,下边就根据代码讲解json传输数据的实际使用。代码中已经写了详细注释,就不在多解释代码了。

首先需要用到的jar包和依赖

json-lib的核心jar包有: 

    json-lib.jar

    json-lib的依赖jar包有:

    commons-lang.jar

    commons-beanutils.jar

    commons-logging.jar

    commons-collections.jar

    ezmorph.jar

这里有jar包资源 https://pan.baidu.com/s/1uRmFYTYWlwivI-I3sT-vrw

1、

    1.1、从前台获取数据提交到servlet

<!DOCTYPE html>
<html>
	<head>
		<title>用ajax以json形式提交一个对象</title>
		<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
		<style type="text/css"></style>
		<!-- 导入jquery -->
		<script type="text/javascript" src="jquery.min.js"></script>
	</head>
	<body>
		<!-- 静态部分 -->
		<form>
			id:<input id="id" type="text" name="id"/><br>
			名字:<input id="name" type="text" name="name"/><br>
			身高:<input id="hei" type="text" name="height"/><br>
			<input id="send" type="button" value="提交"/>
		</form>
		<!-- script部分 -->
		<script>
			$(function() {
				$("#send").click(function() {
					/*
						1,获取json对象
					*/
					var id = $("#id").val();
					var name = $("#name").val();
					var height = $("#hei").val();
					
					var user = {"id":id,"name":name,"height":height};
					/*
						2,获取路径
					*/
					var url = "submitServlet";
					$.post(
						url,		
					/*
						3,JSON.stringify(user)函数的作用是将一个javascript对象,转换为JSON格式的字符串。
					*/
						{"data":JSON.stringify(user)},
						function(data) {
							alert("在tomcat后台查看数据");
						}
					);
				});
			});
		</script>
	</body>
</html>

    1.2、对应的servlet接收数据

package servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import bean.User;
import net.sf.json.JSONObject;

public class SubmitServlet extends HttpServlet {
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*
		 * 1得到提交的字符串形式的数据
		 * */
		String data = request.getParameter("data");
		/*
		 * 2把数据转化为json对象
		 * 使用JSONObject.fromObject方法将字符串形式转化为json对象
		 * 这个方法还可以将map、list、Object,多种形式转化为json对象
		 * */
		JSONObject json = JSONObject.fromObject(data);
		/*
		 * 3把json对象转化为user对象
		 * JSONObject.toBean方法
		 * */
		User user = (User) JSONObject.toBean(json,User.class);
		
		System.out.println("转换为User对象:"+user);
	}
}

2、

    2.1将对象数据解析然后发送到前台

package 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.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import bean.User;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;

public class GetOneServlet extends HttpServlet {
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		User user = new User();
		user.setId(25);
		user.setName("盖伦");
		user.setHeight(1.77f);
		/*
		 * 得到JSONObject对象
		 * JSONObject对象的有个爸爸叫Map,Map的数据存储格式就明晰了
		 * */
		JSONObject json1 = new JSONObject();
		
		/* 构建json第一式,直接put参数进去即可	
		 * JSONObject的put方法,put(key,value);
		 * key必须是字符串形式,value可以是对象、数组、字符串、各种基本类型都可以
		 * JSONObject.fromObject()方法可以填入参数 字符串、对象/数组/Map/List等等转化为json对象
		 * */
		json1.put("user",JSONObject.fromObject(user));
		
		/*
		 * 构建json第二式,传入Map
		 * */
		Map<String, Object> map = new HashMap<String, Object>();
		
		map.put("name", "小红");
		map.put("name", "小花");
		map.put("name", "小草");
		map.put("age", 11);
		
		JSONObject json2 = JSONObject.fromObject(map);
		
		/*
		 * 构建json第三式,传入List
		 * */
		List<User> list = new ArrayList<User>();
		User user1 = new User(1,"爱华",1.8f);
		User user2 = new User(2,"爱华",1.9f);
		User user3 = new User(3,"爱华",1.7f);
		list.add(user1);
		list.add(user2);
		list.add(user3);
		
		JSONObject json3 = JSONObject.fromObject(list);
		
		/*
		 * 构建json四,传入对象
		 * */
		
		JSONObject json4 = JSONObject.fromObject(user1);
		
		/*
		 * 构建json五,集合(JSONSerializer.toJSON)
		 * */
		List<User> users = new ArrayList<User>();
		
		for (int i = 0; i < 20; i++) {
			users.add(new User(i,"name"+i,1.75f));
		}
		
		String json5 = JSONSerializer.toJSON(users).toString();
		/*
		 * 构建json六,使用JSONArray传入集合
		 * */
		JSONArray json6 = new JSONArray();
		
		for (int i = 0; i < 20; i++) {
			json6.add(new User(i,"name"+i,1.75f));
		}
		
		
		//response.getWriter().print(json);
	}
}

    2.2前台接受数据并处理

<!DOCTYPE html>
<html>
<head>
	<title>获得多个对象</title>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
	<style type="text/css"></style>
	<script type="text/javascript" src="jquery.min.js"></script>
</head>
<body>
	<input id="btn" type="button" value="获得多个对象"/><br>
	<div id="dv"></div>
	<script type="text/javascript">
		$(function() {
			$("#btn").click(function() {
				var url = "getManyServlet";
				$.post(
					url,
					function(data) {
						/*
						处理data数据字符串
						如果来的数据是集合的话就获得json数组
						具体看数据是怎样的来解析数据此处不做赘述
						$.parseJSON和JSON.parse(data)功能一样,eval()也可实现从字符串到json对象的转化
						*/
						var users = $.parseJSON(data);
						for(i in users){
							var old = $("#dv").html();
							var user = users[i];
							$("#dv").html(old+"<br>"+user.id+":"+user.name+":"+user.height);
						}
					}
				);
			});
		});
	</script>
</body>
</html>

完毕。后续有拓展再写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值