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



	
		用ajax以json形式提交一个对象
		
		
		
		
	
	
		
		
id:
名字:
身高:

    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 map = new HashMap();
		
		map.put("name", "小红");
		map.put("name", "小花");
		map.put("name", "小草");
		map.put("age", 11);
		
		JSONObject json2 = JSONObject.fromObject(map);
		
		/*
		 * 构建json第三式,传入List
		 * */
		List list = new ArrayList();
		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 users = new ArrayList();
		
		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前台接受数据并处理




	获得多个对象
	
	
	


	

完毕。后续有拓展再写。

你可能感兴趣的:(javaee)