标签:xml json java 生成josn和xml 封装
借鉴与php中 app接口的实现(php写app接口生成xml和json数据),封装了java版的json和xml数据操作类!
在使用之前,需要引入 json 的jar 包:点我下载 !
这里实现了,对象转json , 对象集合转json, 对象转xml,对象集合转xml ;
具体的实现过程,我就不解释了,一边写,一边测试!直到写成为止!
里面的 tojsonArray() 方法 没有使用,可以删除,不过想生成json数组的 ,就不需要删除了!
package Interface.app.Util; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class AppUtil { //默认值 private static final String JSON="json"; private static final String XML="xml"; /** * 工具类入口 * @param code 状态码 * @param msg 提示信息 * @param obj 返回数据 * @param type 数据类型 json / xml * @return 字符串 */ public static String toPrint(int code,String msg,Object obj,String type){ //大小写不影响 String str=""; if(JSON.equalsIgnoreCase(type)&&JSON.equals(type)){ //生成json数据 str=toJsonString(code, msg, obj); }else if(XML.equalsIgnoreCase(type)&&XML.equals(type)){ //生成xml数据 str=toXml(code, msg, obj); }else{ //默认使用 json , 参数错误的话 ,默认 为json str=toJsonString(code, msg, obj); } return str; } /** * 对象转 json 数组 * @param code 状态码 * @param msg 状态信息 * @param obj 数据 * @return json数组 字符串 */ @SuppressWarnings("unused") private static String toJsonArray(int code,String msg,Object obj){ Map<String, Object> map=toKeyVal(code, msg, obj); JSONArray jsonArray=JSONArray.fromObject(map); return jsonArray.toString(); } /** * 这一个就够了! * * 转 json 对象 * @param code 状态码 * @param msg 提示信息 * @param obj 数据 * @return json对象 字符串 */ private static String toJsonString(int code,String msg,Object obj){ if(obj==null) { obj=""; } Map<String, Object> map=toKeyVal(code, msg, obj); JSONObject jsonObject=JSONObject.fromObject(map); return jsonObject.toString(); } /** * 转xml 格式 :字符串拼装的格式 * @param code 状态码 * @param msg 提示信息 * @param obj 数据 * @return xml数据 */ private static String toXml(int code,String msg,Object obj){ if(obj==null) { obj=""; } Map<String,Object> map=toKeyVal(code, msg, obj); JSONObject object=JSONObject.fromObject(map); StringBuilder builder=new StringBuilder("<?xml version='1.0' encoding='UTF-8'?>"); builder.append("<root>"); builder.append(mapToxml(object)); builder.append("</root>"); return builder.toString(); } /** * 用来封装数据 * @param code 状态码 * @param msg 信息 * @param obj 数据 * @return */ private static Map<String, Object> toKeyVal(int code,String msg,Object obj){ Map<String,Object> map=new HashMap<String, Object>(); map.put("code", code); map.put("msg", msg); map.put("data", obj); return map; } /** * 生成 xml * @param object * @return */ private static String mapToxml(JSONObject object){ StringBuilder builder=new StringBuilder(); @SuppressWarnings("unchecked") Iterator<String> iterator=object.keys(); while(iterator.hasNext()){ String key=iterator.next(); builder.append("<"+key+">"); if(object.get(key) instanceof JSONObject){ //如果是 JSONObject的话 //递归 调用 builder.append(mapToxml((JSONObject) object.get(key))); }else if(object.get(key) instanceof JSONArray){ //如果是 JSONArray的话 StringBuilder builder2=new StringBuilder(); JSONArray array=(JSONArray) object.get(key); if(array.isArray()){ int i=0; for(Object obj : array) { JSONObject objitem=(JSONObject) obj; String attr="num='"+i+"'"; //如果有 id 的话 ,可以使用这个 // if(objitem.containsKey("id")){ // attr="id='"+objitem.getString("id")+"'"; // } builder2.append("<item "+attr+">"); builder2.append(mapToxml(objitem)); builder2.append("</item>"); i++; } } builder.append(builder2.toString()); }else{ builder.append(object.get(key)); } builder.append("</"+key+">"); } return builder.toString(); } }
使用URL 传 type 参数 , 或者你调用的时候,将 type的值 写 固定!
1) type=json : 生成json数据 ,
2)type=xml : 生成xml数据 ,
3)不传参或者 type传其他值,均为默认值
示例格式:
http://localhost:8080/TennisGameSys/App_GetgameById?type=json&id=2
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置编码 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); //获取 url参数 String id=request.getParameter("id"); String type=request.getParameter("type"); //查询数据库 GameManager gm=new GameManagerImpl(); Game g=gm.getGameById(Integer.parseInt(id)); //封装数据 String strs= AppUtil.toPrint(1,"success",g, type); response.setContentType("text/"+type); //输出数据 PrintWriter out=response.getWriter(); out.print(strs); out.flush(); out.close(); }
{"data":{"competitorNum":30,"enrollDeadLine":"2015.8.1","gameLocation":"郑州体育中心","gamename":"百事创新网球大赛","gametime":"2015.8.26","id":2,"personNum":2},"code":1,"msg":"success"}
http://download.csdn.net/detail/lablenet/9002325
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:xml json java 生成josn和xml 封装
原文地址:http://blog.csdn.net/lablenet/article/details/47618701