Json-lib 实现 json,java 对象,xml 之间相互转换
来源:互联网 发布:电台广播软件 编辑:程序博客网 时间:2024/05/28 05:19
转载自:http://blog.csdn.net/sdyy321/article/details/7024236
package cn.shopex.util;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import net.sf.json.JSON;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import net.sf.json.JSONSerializer;import net.sf.json.xml.XMLSerializer;import org.apache.commons.io.IOUtils;import cn.shopex.pojo.Item;import com.sun.xml.internal.txw2.Document;/** * JSON工具类 * <li>使用该类请导入json相关架包: * <p>1. commons-beanutils.jar</p> * <p>2. commons-collections-3.2.1.jar</p> * <p>3. commons-lang-*.jar</p> * <p>4. xom-*.jar</p> * <p>5. ezmorph-*.jar</p> * <p>6. json-lib-*-jdk15.jar</p> * </li> * <li>JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互</li> * <li>将JSON写入servlet响应需要设置正确的 MIME 类型(application/json)和字符编码如下: * <p> response.setContentType("application/json;charset=UTF-8"); </p> * <p> response.setCharacterEncoding("UTF-8"); </p> * <p> PrintWriter pw = response.getWriter(); </p> * <p> pw.write(JsonUtil.toJson(obj)); </p> * <p> pw.flush(); </p> * </li> * <li>在客户端使用 JSON.可以通过对 eval() 的简单调用实现,这个函数可以即时地解释包含 JavaScript 表达式的字符串,最后使用 属性.值.值.... 的形式获得想要的数据</li> * <li>Ajax 的 Java 对象序列化方式有: * <p>1、从 Java 类产生 XML,每个对象都编写自己的 XML 生成代码</P> * <p>2、XML 绑定框架,简化 XML 文档到 Java 对象图的绑定过程,使用代码生成的框架包括XMLBeans、JAXB、Zeus 和 JBind,采用映射方式的框架包括 Castor 和 Apache Commons Betwixt</P> * <p>3、页面模板系统,使用jstl等标记语言形成想要的模板</P> * <p>4、不用 XML 的响应数据,除了 responseXML 之外,XMLHttpRequest 对象还提供了名为 responseText 的属性,这个属性只是以字符串的方式提供服务器的响应体,在只需要从响应文档中提取单一值的场景中,“欺骗性”地把 XML 当作文本字符串并合理使用正则表达式,而不把它当作结构化的文档对待,会更方便</P> * <p>5、JavaScript 对象标注,即JSON</P> * </li> * <li>如果要处理数百种数据类型,这时想要的是可伸缩性,那么代码生成可能就是最好的选择。如果需要为同一数据模型生成多个不同视图,那么就应当使用页面模板。如果处理的是小规模项目,想降低需要编写的 JavaScript 代码数量,那么请考虑 JSON</li> * @author yangYong * */public class JsonTools {/** * 将一个实体类对象转化成JSON数据格式,等效于object2json * @param obj 实体类对象 * @return JSON数据格式字符串 */public static String pojo2json(Object obj){return JSONObject.fromObject(obj).toString(1);}/** * 将数组集合等对象转换成JSON字符串 * @param list * @return */public static String object2json(Object list){return JSONSerializer.toJSON(list).toString(1);}/** * 将Map准换为JSON字符串,等效于object2json() * @param map map集合 * @returnJSON字符串 */public static String map2json(Map<?,?> map){JSONObject object = JSONObject.fromObject(map);return object.toString(1);}/** * 将xml字符串转换为JSON字符串 * @param xmlStringxml字符串 * @returnJSON对象 */public static String xml2json(String xmlString){XMLSerializer xmlSerializer = new XMLSerializer();JSON json = xmlSerializer.read(xmlString);return json.toString(1);}/** * 将xmlDocument转换为JSON对象 * @param xmlDocumentXML Document * @returnJSON对象 */public static String xml2json(Document xmlDocument){return xml2json(xmlDocument.toString());} /** * 读取XML文件准换为JSON字符串 * @param xmlFile XML文件 * @return JSON字符串 */ public String xmlFile2json(String xmlFile) { InputStream is = this.getClass().getResourceAsStream(xmlFile); String xml; String json = null; try { xml = IOUtils.toString(is); json = xml2json(xml); } catch (IOException e) { e.printStackTrace(); } return json; }/** * 将Json格式的字符串转换成指定的对象返回 * @param jsonStr 要转化的Json格式的字符串 * @param javaBean 指定转化对象类型 * @return 转化后的对象 */public static Object json2pojo(String jsonStr,Class javaBean){JSONObject jsonObj = JSONObject.fromObject(jsonStr);Object obj = JSONObject.toBean(jsonObj, javaBean);return obj;}/** * 将Json格式的字符串转换成Map对象 * @param jsonString JSON数据格式字符串 * @return map集合 */public static Map<String, Object> json2Map(String jsonString) { return (Map<String, Object>) json2pojo(jsonString,Map.class); }/** * 将Json格式的字符串转换成对象数组返回 * @param jsonString JSON数据格式字符串 * @return 对象数组 */public static Object[] json2ObjectArray(String jsonString) { JSONArray jsonArray = JSONArray.fromObject(jsonString); return jsonArray.toArray(); }/** * 将Json格式的字符串转换成指定对象组成的List返回 * @param jsonString JSON数据格式字符串 * @param pojoClass 指定转化对象类型 * @return list集合 */public static List jsonArray2List(String jsonString, Class pojoClass){JSONArray jsonArray = JSONArray.fromObject(jsonString);return jsonArray.toList(jsonArray,pojoClass);}/** * pojo,集合,数组等对象转换成XML字符串 * @param obj * @return */public static String obj2xml(Object obj){XMLSerializer xmlSerializer = new XMLSerializer();return xmlSerializer.write(JSONSerializer.toJSON(obj));}/** * JSON(数组)字符串转换成XML字符串 * @param jsonString * @return */public static String json2xml(String jsonString){XMLSerializer xmlSerializer = new XMLSerializer();return xmlSerializer.write(JSONSerializer.toJSON(jsonString));//return xmlSerializer.write(JSONArray.fromObject(jsonString));//这种方式只支持JSON数组}public static void main(String[] args) {List<Item> list = new ArrayList<Item>();Map map = new LinkedHashMap();String json = "[{'id':1,'name':'张三'},{'id':2,'name':'李四'},{'id':3,'name':'王五'}]";String json2 = "{'id':1,'name':'张三'}";String xml = "<o><id>1</id><name>张三</name></o>";Item item1 = new Item();item1.setId(1);item1.setName("杯子");item1.setPrice(20);Item item2 = new Item();item2.setId(2);item2.setName("帽子");item2.setPrice(230);Item item3 = new Item();item3.setId(3);item3.setName("袜子");item3.setPrice(230);list.add(item1);list.add(item2);list.add(item3);map.put("a", item1);map.put("b", item2);map.put("c", item3);System.out.println(object2json(item1));System.out.println(object2json(list));System.out.println(object2json(map));System.out.println(map2json(map));System.out.println(xml2json(xml));System.out.println(json2ObjectArray(json));System.out.println(json2pojo(json2, Item.class));System.out.println(jsonArray2List(json, Item.class));System.out.println(json2Map(json2));System.out.println(json2xml(json));System.out.println(obj2xml(item1));}}
- Json-lib实现json,java对象,xml之间相互转换 .
- Json-lib 实现 json,java 对象,xml 之间相互转换
- json/java对象/xml之间相互转换
- xml,json,对象 之间的相互转换
- json与java、xml相互转换——json-lib
- Jackson框架,实现Java对象/Json/XML相互转换
- 通过json-lib实现Java对象和json字符串的相互转换
- [JSON-lib框架]使java对象、json、xml之间的转换不再困难
- [JSON-lib框架]使java对象、json、xml之间的转换不再困难
- Java对象 json之间的转换(json-lib)
- JAVA 实现XML与JSON 相互转换
- JAVA 实现XML与JSON 相互转换
- json-lib JSON与Java之间转换
- java对象与json对象之间的相互转换
- 使用 XStream实现JavaBean 与 XML/JSON 之间相互转换
- 用php实现xml与json之间的相互转换
- 用php实现xml与json之间的相互转换
- 非标准json,标准json,json字符串与js对象,Java对象之间的相互转换
- ajax 资源
- linux下c++环境搭建
- Linux Kernel 1.0
- 日期加1、减1
- Linux守护进程的编程实现
- Json-lib 实现 json,java 对象,xml 之间相互转换
- Vlookup查找的数据首列
- android之cannot convert from Fragment1 to Fragment
- Service与Android系统实现(1)
- Cisco CatOS系统交换机的SPAN配置
- 安卓音乐播放器--侧边栏
- Service与Android系统设计(2)
- Jquery图片延迟加载
- 守护进程