XStream以及JSON、JSON-lib工具的应用

XStream的应用

  1. 作用:将JavaBean转换成(序列化)xml
  2. jar包:xstream-1.4.10.jar;xpp3_min-1.1.4c.jar
  3. 如何使用:
    1)建立好JavaBean模型
    2)XStream xstream = new XStream(); String xml = xstream.toXML(JavaBean对象);
  4. 其它方法:
    1)xstream.alias(“要替换后的标签名称”,xxx.class); 将该类的标签名称进行替换
    2)xstream.omitField(xxx.class,“元素名称”) 将该元素的名称进行去除,不生成xml
    3)xstream.useAttributeFor(xxx.class,“属性名称”); 将该类下的元素变为自己的属性生成xml
    4)xstream.addImplicitCollection(xxx.class,“标签名”); 去除Collection类型的成员,只需要它的内容,不需要它本身
package xstream;

public class City {
	// 城市名
	private String name;
	// 城市编号
	private int code;
	// 城市描述
	private String description;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public City(String name, int code, String description) {
		super();
		this.name = name;
		this.code = code;
		this.description = description;
	}

	public City() {
		super();
	}

}
package xstream;

import java.util.List;

public class Province {
	private String name;
	private List<City> cities;

	public String getName() {
		return name;
	}

	public void setProvince(String name) {
		this.name = name;
	}

	public List<City> getCities() {
		return cities;
	}

	public void setCities(List<City> cities) {
		this.cities = cities;
	}

	public Province(String name, List<City> cities) {
		super();
		this.name = name;
		this.cities = cities;
	}

	public Province() {
		super();
	}

}
package xstream;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import com.thoughtworks.xstream.XStream;

/**
 * 将JavaBean生成xml
 * @author tqb
 *
 */
public class Test1 {
	//对JavaBean添加一些数据
	public List<Province> getProvince(){
		Province p1 = new Province();
		Province p2 = new Province();
		p1.setProvince("陕西");
		List<City> list1 = new ArrayList<City>();
		list1.add(new City("西安", 001, "Xi'an"));
		list1.add(new City("榆林", 002, "YuLin"));
		p1.setCities(list1);
	
		p2.setProvince("宁夏");
		List<City> list2 = new ArrayList<City>();
		list2.add(new City("银川", 001, "YinChuan"));
		list2.add(new City("吴忠", 002, "WuZhong"));
		p2.setCities(list2);
		
		List<Province> p = new ArrayList<Province>();
		p.add(p1);
		p.add(p2);
		return p;
	}
	
	@Test
	public void fun(){
		List<Province> province = this.getProvince();
		XStream xstream = new XStream();
		//替换别名
		xstream.alias("china", List.class);
		xstream.alias("province", Province.class);
		xstream.alias("city", City.class);
		//将元素变成属性
		xstream.useAttributeFor(Province.class, "name");
		//去除元素,不生成xml
		xstream.omitField(City.class, "description");
		//去除Collection类型的成员,我们只需要它的内容,不需要它也生成xml标签
		xstream.addImplicitCollection(Province.class, "cities");
		String xml = xstream.toXML(province);
		System.out.println(xml);
		/*
		 * 最终结果
		 * <china>
			  <province name="陕西">
			    <city>
			      <name>西安</name>
			      <code>1</code>
			    </city>
			    <city>
			      <name>榆林</name>
			      <code>2</code>
			    </city>
			  </province>
			  <province name="宁夏">
			    <city>
			      <name>银川</name>
			      <code>1</code>
			    </city>
			    <city>
			      <name>吴忠</name>
			      <code>2</code>
			    </city>
			  </province>
			</china>
		 */
	}
}

JSON的应用

  1. 语法:
    1)对象用{ }括起来
    2)属性名必须用双引号括起来" ",单引号不可以
    3)属性值:null、数值、字符串、数组(用[ ]括起来)boolean值(true、false)
  2. 举例:
    [{“username”: “tqb”, “password”: “password”}, {“address”: “shaan”}]
  3. 应用:
package tqb.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/AServlet")
public class AServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		String json = "{\"province\": \"shaanxi\", \"city\": \"xian\"}";
		response.getWriter().print(json);
	}
}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  <script type="text/javascript">
	  	function createXMLHttpRequest(){
	  	try{
	  		//大多数浏览器
	  		return new XMLHttpRequest();
	  	}catch(e){
	  		try{
	  			//IE6
	  			return ActvieXObject("Msxml2.XMLHTTP");
	  		}catch(e){
	  			try{
	  				//IE5.5及以下
	  				return ActiveXObject("Microsoft.XMLHTTP");
	  			}catch(e){
	  				alert("您的浏览器版本过低或不兼容,请升级或更换浏览器!!!");
	  				throw e;
	  			}
	  		}	
	  	}
	  }
  
  	window.onload = function(){
  		var btn = document.getElementById("btn");
  		btn.onclick = function(){
  			var xmlHttp = createXMLHttpRequest();
  			xmlHttp.open("GET", "<c:url value='/AServlet'/>", true);
  			xmlHttp.send(null);
  			xmlHttp.onreadystatechange = function(){
  				if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
  					var jsonText = xmlHttp.responseText;
  					//调用函数执行json语句
  					var provinces = eval("(" + jsonText + ")");
  					var h1 = document.getElementById("h1");
  					h1.innerHTML = provinces.province + "," + provinces.city;
  				}
  			};
  		};
  	};
  </script>
  <body>
  <h1>JSON</h1>
  <br>
  <button id="btn">提交</button>
  <br>
  <h1 id="h1"></h1>
  </body>
</html>

JSON-lib的应用

  1. 作用:将对象转换JavaBean转换成JSON
  2. JSONObject类:
    方法:
    toString():将生成的json转换成字符串
    fromObject():将对象转换成JSONObject对象
  3. JSONArray类:
    方法:
    toString():将生成的json转换成字符串
    fromObject():将list转换成JSONArray对象
package tqb.servlet;


import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class Json_lib {
	/**
	 * JSONObject继承自Map,将map转换成JSON
	 */
	@Test
	public void fun1(){
		JSONObject map = new JSONObject();
		map.put("name", "zhangsan");
		map.put("age", 20);
		map.put("sex", "male");
		String str = map.toString();
		System.out.println(str);
		//{"name":"zhangsan","age":20,"sex":"male"}
	}
	
	/**
	 * 将对象转换成json,如将JavaBean对象转换成json
	 */
	@Test
	public void fun2(){
		Person p = new Person("lisi", 21, "female");
		//静态方法调用
		JSONObject map = JSONObject.fromObject(p);
		System.out.println(map.toString());
		//{"age":21,"name":"lisi","sex":"female"}
	}
	
	/**
	 * JSONArray继承自List
	 */
	@Test
	public void fun3(){
		Person p1 = new Person("lisi", 21, "female");
		Person p2 = new Person("zhangsan", 20, "male");
		JSONArray list = new JSONArray();
		list.add(p1);
		list.add(p2);
		String str = list.toString();
		System.out.println(str);
		//[{"age":21,"name":"lisi","sex":"female"},{"age":20,"name":"zhangsan","sex":"male"}]
	}
	
	/**
	 * 将List<Person>转换成json
	 */
	@Test
	public void fun4(){
		List<Person> list = new ArrayList<Person>();
		Person p1 = new Person("lisi", 21, "female");
		Person p2 = new Person("zhangsan", 20, "male");
		list.add(p1);
		list.add(p2);
		JSONArray li = JSONArray.fromObject(list);
		System.out.println(li.toString());
		//[{"age":21,"name":"lisi","sex":"female"},{"age":20,"name":"zhangsan","sex":"male"}]
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值