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"}] } } 
全部评论

相关推荐

现在是2026.2.27,距离我2025.8.16在boss上投出第一份简历以来已经过去了半年多时间了。可能许多牛友对我并不陌生,在去年的89月份,深陷实习焦虑的我不停的在牛客上发帖求助,改过的简历不知道发了多少次。因为双非本的缘故,在实习这条路上可谓是处处碰壁。boss上四位数的沟通只换来两位数的回复,好不容易约到的面试很多还因为各种原因被挂。最终在9月底遇到了我实习过程中的第一个贵人:美团实习的ld。尽管那是个测开岗,但是没有关注我实际的技术栈,而是用专业的提问让我感受到了前所未有的面试体验,发掘了自己的技术闪光点。最终让我决定放弃了另一家中小厂的后端。他们非常尊重我对开发学习的热情,也给足了我自由发挥的空间,如果不是他们让我深度参与的用例生成项目,我或许连接到后面面试的机会都没有。尽管岗位不是开发,但这个过程中对大厂工作流程的深度参与以及对业务,项目,和技术的思维提升对我后续的开发面试一样提供了巨大的帮助。时代的洪流让我们每个人都被迫卷入其中,错过了互联网的红利时期,无论实习还是秋招都令不同背景的同学倍感压力,尽管如此我们依旧要相信:努力定有回报最后祝各位27的兄弟姐妹们,在暑期实习的面试路上一路披荆斩棘,策马扬鞭,用梦中情司的offer回应自己一直以来不愿放弃的拼搏timeline:2.6一面2.11&nbsp;二面2.12&nbsp;三面&nbsp;当天转hr面2.26&nbsp;hr面,面完云证+录用评估2.27&nbsp;offer
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务