版权声明:转载请联系作者本人!!! https://blog.csdn.net/weixin_42061805/article/details/82773743
XStream的应用
- 作用:将JavaBean转换成(序列化)xml
- jar包:xstream-1.4.10.jar;xpp3_min-1.1.4c.jar
- 如何使用:
1)建立好JavaBean模型
2)XStream xstream = new XStream(); String xml = xstream.toXML(JavaBean对象); - 其它方法:
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)对象用{ }括起来
2)属性名必须用双引号括起来" ",单引号不可以
3)属性值:null、数值、字符串、数组(用[ ]括起来)boolean值(true、false) - 举例:
[{“username”: “tqb”, “password”: “password”}, {“address”: “shaan”}] - 应用:
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的应用
- 作用:将对象转换JavaBean转换成JSON
- JSONObject类:
方法:
toString():将生成的json转换成字符串
fromObject():将对象转换成JSONObject对象 - 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"}]
}
}