`
忧里修斯
  • 浏览: 445229 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Ext工具类:将对象或List转换为json格式或xml格式

阅读更多
注意:List中只有存放的是相应的Java对象,才能正确转换成json、xml格式
1、核心
package com.dreamoa.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.dreamoa.domain.Menu;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

import net.sf.json.JSONObject;

/**
 * 数据转换工具类,用于将单个对象、List转换为json、xml格式的字符串
 */
public class ExtUtil {
	
	/**
	 * 将list对象转换为json格式的数据
	 * @param totalNum,记录总数
	 * @param inList,需要转换的list
	 * @return
	 */
	public static String getJsonFromList(long totalNum,List inList){
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("totalNum", inList.size());
		map.put("resultList", inList);
		JSONObject jsonObj = JSONObject.fromObject(map);
		return jsonObj.toString();
	}
	
	/**
	 * 将单个对象转换为json格式,此对象不能为集合类型
	 * @param inObject
	 * @return
	 */
	public static String getJsonFromObject(Object inObject){
		JSONObject jsonString = JSONObject.fromObject(inObject);
		return jsonString.toString();
	}
	
	/**
	 * 将List转化为xml格式的数据
	 * @param totalNum
	 * @param inList,需要转换的list
	 * @return String
	 */
	public static String getXmlFromList(long totalNum,List inList){
		Total total = new Total();
		total.setTotalNum(totalNum);
		//创建临时的List对象
		List results = inList;
		results.add(total);
		//创建XStream对象
		XStream xs = new XStream(new DomDriver());
		//为所有的类创建别名,别名为不包含包名的类名
		for (int i = 0; i < results.size(); i++) {
			Class clzz = results.get(i).getClass();
			//得到全限定类名
			String fullName = clzz.getName();
			//以"."分割字符串
			String [] temp = fullName.split("\\.");
			xs.alias(temp[temp.length-1], clzz);
		}
		String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+xs.toXML(results);
		return xmlString;
	}
	
	/**
	 * 将一个Object对象转化为xml格式输出
	 * @param object
	 * @return
	 */
	public static String getXmlFromObject(Object object){
		XStream xs = new XStream(new DomDriver());
		Class clazz = object.getClass();
		String [] temp = clazz.getName().split("\\.");
		xs.alias(temp[temp.length-1], clazz);
		String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+xs.toXML(object);
		return xmlString;
	}
	
	/**
	 * 将对象转换为表单数据加载需要的格式
	 * @param object
	 * @return
	 */
	public static String getLoadFormData(Object object){
		
		return "";
	}
	public static void main(String[] args) {
		Menu menu = new Menu();
		menu.setName("name");
		menu.setParentid("123");
		Menu menu2 = new Menu();
		menu2.setName("name2");
		menu2.setParentid("1233");
		List inList = new ArrayList();
		inList.add(menu);
		inList.add(menu2);
		System.out.println(ExtUtil.getXmlFromList(inList.size(), inList));
	}
}


2、Total.java
package com.hf.sfm.util;

import java.util.List;

/**
 * 将List转化为xml时getXmlFromList(),用来存放记录总数
 * @author Administrator
 *
 */
public class Total {
	
	private long totalNum;//记录总数
	private List resultList;//要转换的List,也是转换后的结果集名称

	public long getTotalNum() {
		return totalNum;
	}

	public void setTotalNum(long totalNum) {
		this.totalNum = totalNum;
	}

	public List getResultList() {
		return resultList;
	}

	public void setResultList(List resultsList) {
		this.resultList = resultsList;
	}
	
}
分享到:
评论

相关推荐

    json-lib-2.1

    在Java世界里,将Java对象转换为JSON格式或反之,需要特定的库来实现。"json-lib-2.1"就是这样一个库,专为Java开发者设计,用于方便地将Java集合、数组、POJO(Plain Old Java Object)等数据结构转换为JSON格式,...

    json包及依赖包

    4. **Apache Commons Lang**:`commons-lang-2.2.jar`是另一个Apache Commons组件,提供了一些实用的工具类,增强了Java内置类的功能,对于处理JSON字符串和对象转换非常有用。 5. **Apache Commons HttpClient**:...

    ext2.2+struts2使用json传输数据生成的树

    同时,在Action类中,我们可以将需要转换为`JSON`的数据集合(例如,树的节点信息)放入一个Java对象,然后使用`ValueStack`将其压入,以便`Struts2`自动转换为`JSON`格式。 在Action类中,我们还需要设置`Content-...

    Ext中Ajax的应用

    然后在 `login` 函数中,通过 `Ext.Ajax.request` 方法将该 XML 文档对象发送到服务器。服务器端接收到 XML 数据后,可以根据其中的内容进行相应的逻辑处理。 #### 二、Ext 整合 DWR **2.1 在 Grid 中使用 DWR ...

    tree/ext/struct 的一切部署

    例如,我们可能会有一个名为`TreeServlet`的Java类,它接收EXTJS的Ajax请求,通过遍历Java对象结构,将树数据转换成JSON字符串: ```java @RequestMapping("/loadTree") public @ResponseBody String loadTree() { ...

    highcharts-图表导出到word 代码.docx

    这里`Ext.encode(sendRecord)`将数组转换为JSON字符串,`value`属性的格式是按照内部JSON解析工具的要求设定的。 在服务器端(后端),通常是一个Servlet,接收前端发送的数据并处理导出。例如,在Java中,你可以...

    阿里巴巴 面经

    - **反序列化**:将序列化的数据恢复为对象。 **42. 常见的序列化协议** - **JSON**:JavaScript Object Notation,广泛应用于Web应用。 - **XML**:Extensible Markup Language,用于文档交换。 - **Protocol ...

    extjs+struts2分页例子

    Struts2的Result类型可以设置为JSON,以便返回的数据能被EXTJS解析。 具体步骤如下: 1. 创建EXTJS Grid:定义列模型、Store和Column模型,配置分页参数。 ```javascript var store = Ext.create('Ext.data.Store'...

    Spring整合CXF,发布RSETful 风格WebService

    在实际开发中,我们可能会遇到更复杂的场景,例如处理JSON或XML数据,使用HTTP Header,或者实现分页和过滤。CXF和其他JAX-RS实现提供了丰富的注解和类库来支持这些需求。 总之,Spring与CXF的整合使得开发RESTful...

Global site tag (gtag.js) - Google Analytics