- 浏览: 72017 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
木子响:
提供了一种下拉Grid的新的思路,虽然我不准备用这种方式,不过 ...
ComboBox或TextField实现下拉GridPanel控件 -
814687491:
谢谢,能使用,不是在你这复制的。不过还是参考了你的程序
读取js压缩为gzjs格式文件 -
tangyx:
同求例子,EXT新手 支持Ext版本有限制吗 邮箱9 ...
用My97扩展成的ExtJs日期时间插件 -
squalllove2012:
楼主,非常感谢谢,麻烦你给我发一个能带上示例的,我的邮箱是sq ...
用My97扩展成的ExtJs日期时间插件 -
wmj007:
可以给我发一个吗,谢谢,我在IE8下没反应!wmj111@gm ...
用My97扩展成的ExtJs日期时间插件
一个用于将相应格式转换成JSON,及JSON到相应格式的通用类
package net.kangsoft.util.common; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import oracle.sql.CLOB; import net.sf.json.JSONArray; import net.sf.json.JSONObject; /** * 将任意格式的数据转为json数据 日期转换问题yyyy-MM-dd */ @SuppressWarnings("unchecked") public class JsonUtils { /** * @param array * 对象数组 * @return String 返回部分json字符串[1,2,3] */ public static String arrayToJson(Object[] array) { StringBuilder json = new StringBuilder(); json.append("["); if (array != null && array.length > 0) { for (Object obj : array) { json.append(objectToJson(obj)); json.append(","); } json.setCharAt(json.length() - 1, ']'); } else { json.append("]"); } return json.toString(); } /** * javabean转换成Json字符串 * * @param bean * bean对象 * @return String 返回整个json字符串{a:'a',b:'b'} */ public static String beanToJson(Object bean) { StringBuilder json = new StringBuilder(); json.append("{"); PropertyDescriptor[] props = null; try { props = Introspector.getBeanInfo(bean.getClass(), Object.class) .getPropertyDescriptors(); } catch (IntrospectionException e) { } if (props != null) { for (int i = 0; i < props.length; i++) { try { String name = objectToJson(props[i].getName()); String value = objectToJson(props[i].getReadMethod() .invoke(bean)); json.append(name); json.append(":"); json.append(value); json.append(","); } catch (Exception e) { } } json.setCharAt(json.length() - 1, '}'); } else { json.append("}"); } return json.toString(); } /** * beanToJsonOnly 获取单条用户信息专用 * * @param bean * bean对象 * @return String */ public static String beanToJsonOnly(String root, Object bean) { JSONArray jArray = new JSONArray(); JSONObject jObject = new JSONObject(); JSONObject jsoObject = new JSONObject(); PropertyDescriptor[] props = null; try { props = Introspector.getBeanInfo(bean.getClass(), Object.class) .getPropertyDescriptors(); } catch (IntrospectionException e) { } if (props != null) { for (int i = 0; i < props.length; i++) { try { String name = objectToJsonforbeanToJsonOnly(props[i] .getName()); String value = objectToJsonforbeanToJsonOnly(props[i] .getReadMethod().invoke(bean)); jObject.put(name, value); } catch (Exception e) { } } jArray.add(jObject); jsoObject.put(root, jArray); } else { } return jsoObject.toString(); } /*** * bool转换Json字符串 * * @param bool * @return */ public static String booleanToJson(Boolean bool) { return bool.toString(); } /*** * 日期转换成"yyyy-MM-dd HH:mm:ss"形式的字符串 * * @param date * @return */ public static String date18ToJson(java.util.Date date) { String dateFormatString = ""; SimpleDateFormat sdf = null; sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); dateFormatString = sdf.format(date); return dateFormatString; } /** * 方法说明:用于分页 * @param rootKey 对应JsonReader.root的key * @param rootData 单个页面要显示的数据 * @param totalKey 对应JsonReader.totalProperty的key * @param totalCount 所有记录的条数 * @return */ public static String pageListToJson(String rootKey, List<?> rootData, String totalKey, long totalCount) { StringBuilder json = new StringBuilder(); json.append("{\"" + rootKey + "\":["); if (rootData != null && rootData.size() > 0) { for (Object obj : rootData) { json.append(objectToJson(obj)); json.append(","); } json.setCharAt(json.length() - 1, ']'); } else { json.append("]"); } json.append(",\"" + totalKey + "\":" + totalCount); json.append("}"); return json.toString(); } /** * 显示所有数据 * @param key * @param list * @return */ public static String listToJson(String key, List<?> list) { StringBuilder json = new StringBuilder(); json.append("{success:true,\"" + key + "\":["); if (list != null && list.size() > 0) { for (Object obj : list) { json.append(objectToJson(obj)); json.append(","); } json.setCharAt(json.length() - 1, ']'); } else { json.append("]"); } json.append("}"); return json.toString(); } /** * @param map * map对象 * @return String */ public static String mapToJson(Map<?, ?> map) { StringBuilder json = new StringBuilder(); json.append("{"); if (map != null && map.size() > 0) { for (Object key : map.keySet()) { json.append(objectToJson(key)); json.append(":"); json.append(objectToJson(map.get(key))); json.append(","); } json.setCharAt(json.length() - 1, '}'); } else { json.append("}"); } return json.toString(); } /** * 从map到json转换后如:map[('a','avalue'),('b','bvalue')]->[{key_json:'a',value_json:'avalue'},{key_json:'b',value_json:'bvalue'}] * @param map * @param key_json 键转成json后对应json键 * @param value_json 值转成json后对应json键 * @return */ public static String mapToJson(Map<?, ?> map,String key_json,String value_json) { StringBuilder json = new StringBuilder(); json.append("["); if (map != null && map.size() > 0) { for (Object key : map.keySet()) { json.append("{"+key_json+":"+objectToJson(key)); json.append(","); json.append(value_json+":"+objectToJson(map.get(key))); json.append("}"); } } else { json.append("]"); } return json.toString(); } /*** * null转换Json字符串 * * @return 空字符串 */ public static String nullToJson() { return ""; } /*** * 数字转换成Json字符串 * * @param number * @return */ public static String numberToJson(Number number) { if (number.toString().equals("0") || number.toString().equals("0.0")) { return "\"\""; } return number.toString(); } /*** * 对象转换Json字符串 * * @param obj * @return */ public static String objectToJson(Object obj) { StringBuilder json = new StringBuilder(); if (obj == null) { json.append("\"\""); } else if (obj instanceof Number) { json.append(numberToJson((Number) obj)); } else if (obj instanceof Boolean) { json.append(booleanToJson((Boolean) obj)); } else if (obj instanceof String) { json.append("\"").append(stringToJson(obj.toString())).append("\""); } else if (obj instanceof Object[]) { json.append(arrayToJson((Object[]) obj)); } else if (obj instanceof List) { json.append(listToJson(null, (List<?>) obj)); } else if (obj instanceof Map) { json.append(mapToJson((Map<?, ?>) obj)); } else if (obj instanceof Set) { json.append(setToJson((Set<?>) obj)); } else if (obj instanceof Date) { json.append("\"").append(date18ToJson((Date) obj)).append("\""); } else { json.append(beanToJson(obj)); } return json.toString(); } /** * beanToJsonOnly 专用 * * @param obj * @return */ public static String objectToJsonforbeanToJsonOnly(Object obj) { StringBuilder json = new StringBuilder(); if (obj == null) { json.append(""); } else if (obj instanceof Number) { json.append(numberToJson((Number) obj)); } else if (obj instanceof Boolean) { json.append(booleanToJson((Boolean) obj)); } else if (obj instanceof String) { json.append("").append(stringToJson(obj.toString())).append(""); } else if (obj instanceof Object[]) { json.append(arrayToJson((Object[]) obj)); } else if (obj instanceof List) { json.append(listToJson(null, (List<?>) obj)); } else if (obj instanceof Map) { json.append(mapToJson((Map<?, ?>) obj)); } else if (obj instanceof Set) { json.append(setToJson((Set<?>) obj)); } else if (obj instanceof Date) { json.append("").append(date18ToJson((Date) obj)).append(""); } else { json.append(beanToJsonOnly(null, obj)); } return json.toString(); } /** * @param set * 集合对象 * @return String */ public static String setToJson(Set<?> set) { StringBuilder json = new StringBuilder(); json.append("{"); if (set != null && set.size() > 0) { for (Object obj : set) { json.append(objectToJson(obj)); json.append(","); } json.setCharAt(json.length() - 1, '}'); } else { json.append("}"); } return json.toString(); } /*** * 从一个json格式的字符串数组来得到json数组 * * @param jStrings * @return */ public static JSONArray stringArrayToJSONArray(String[] jStrings) { JSONArray jArray = new JSONArray(); JSONObject jobject = null; for (int i = 0; i < jStrings.length; i++) { jobject = JSONObject.fromObject(jStrings[i]); jArray.add(jobject); jobject.clear(); } return jArray; } /*** * 字符转换Json字符串 * * @param s * @return String */ public static String stringToJson(String s) { if (s == null) { return nullToJson(); } StringBuilder sb = new StringBuilder(); for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i); switch (ch) { case '"': sb.append("\\\""); break; case '\\': sb.append("\\\\"); break; case '\b': sb.append("\\b"); break; case '\f': sb.append("\\f"); break; case '\n': sb.append("\\n"); break; case '\r': sb.append("\\r"); break; case '\t': sb.append("\\t"); break; case '/': sb.append("\\/"); break; default: if (ch >= '\u0000' && ch <= '\u001F') { String ss = Integer.toHexString(ch); sb.append("\\u"); for (int k = 0; k < 4 - ss.length(); k++) { sb.append('0'); } sb.append(ss.toUpperCase()); } else { sb.append(ch); } } } return sb.toString(); } /** * 从json转换成指定的类型 集合 * @param c ->要转换到的类型 * @param values ->前台来的json格式字符串数组,数组中每个元素是一个对象的属性集合如{"id":"2","name":"zhangsan"} * @return c的集合 */ public static List jsonToList(Class c,String[] values) { List list=new ArrayList(); try { for(String ejson : values) { if(Common.isEmpty(ejson)) continue; ejson=ejson.substring(ejson.indexOf("{")+1); ejson=(ejson.lastIndexOf("}")==-1)?ejson:ejson.substring(0,ejson.lastIndexOf("}")); String[] os=ejson.split(",\""); Object o=c.getConstructor().newInstance(); for(String key : os) { Class filedClass=null;//属性所属的类型 try { String field=key.substring(0,key.indexOf(":"));//属性名 if(0==field.indexOf("\"")) field=field.substring(field.indexOf("\"")+1);//去前双引号(如果有) field=(field.lastIndexOf("\"")==-1)?field:field.substring(0,field.lastIndexOf("\""));//去后双引号(如果有) String fieldValue=key.substring(key.indexOf(":")+1);//属性值 if(fieldValue.indexOf("\"")==0) fieldValue=fieldValue.substring(fieldValue.indexOf("\"")+1); fieldValue=(fieldValue.lastIndexOf("\"")==-1)?fieldValue:fieldValue.substring(0,fieldValue.lastIndexOf("\"")); Common.setFieldValue(fieldValue, field, o); } catch (Exception e) { System.err.println("\n\t"+key+"这个属性在指定的类中不存在或值类型不正确!或外键类变量'" + key + "'必须有一个Long型参数的构造方法(public Example(Long id){})\n\n"); // e.printStackTrace(); } } list.add(o); } } catch (Exception e) { e.printStackTrace(); } return list; } /** * 从json转换成指定的类型 集合 * @param values ->前台来的json格式字符串数组,数组中每个元素是一个对象的属性集合如{"id":"2","name":"zhangsan"} * @return c的集合 */ public static List<Map<String,String>> jsonToMap(String[] values) { List<Map<String,String>> list=new ArrayList<Map<String,String>>(); try { for(String ejson : values) { Map<String,String> valueMap=new HashMap<String, String>(); if(Common.isEmpty(ejson)) continue; ejson=ejson.substring(ejson.indexOf("{")+1); ejson=(ejson.lastIndexOf("}")==-1)?ejson:ejson.substring(0,ejson.lastIndexOf("}")); String[] os=ejson.split(","); for(String key : os) { if(Common.isEmpty(key)) continue; try { String field=key.substring(0,key.indexOf(":"));//属性名 field=field.substring(field.indexOf("\"")+1);//去前双引号(如果有) field=(field.lastIndexOf("\"")==-1)?field:field.substring(0,field.lastIndexOf("\""));//去后双引号(如果有) String fieldValue=key.substring(key.indexOf(":")+1);//属性值 fieldValue=fieldValue.substring(fieldValue.indexOf("\"")+1); fieldValue=(fieldValue.lastIndexOf("\"")==-1)?fieldValue:fieldValue.substring(0,fieldValue.lastIndexOf("\"")); valueMap.put(field.trim(), fieldValue.trim()); } catch (Exception e) { // e.printStackTrace(); } } list.add(valueMap); } } catch (Exception e) { e.printStackTrace(); } return list; } /** * 将传入的集合转换成jsonArray * @param values 集合数据,可以是对象 * @param keys 键,如果是对象传对象的class如:['name',User.class,'gender'] * @return * @throws SqlOperationException */ public static JSONArray listToJsonArray(List values,Object[] keys) { if(values==null||values.size()==0) return new JSONArray(); JSONArray ja=new JSONArray(); for(Object value : values) { Object[] os=null; if(value instanceof Object[]) os=(Object[])value; else os=new Object[]{value}; JSONObject json=new JSONObject(); int i=0; for(Object o : keys){ if(!(o instanceof Class)){ Object resultStr=os[i]; if(os[i] instanceof org.hibernate.lob.SerializableClob) { CLOB c=(CLOB)((org.hibernate.lob.SerializableClob)os[i]).getWrappedClob(); try { resultStr=c.getSubString(1, (int) c.length()); } catch (SQLException e) { } } json.put(o.toString().trim(), (resultStr==null)?"":resultStr.toString().trim());i++; } else { JSONObject jo=new JSONObject(); jo.put("o", os[i]); List<Map<String,String>> list=jsonToMap(new String[]{jo.toString().substring(5, jo.toString().length()-2)}); Map<String,String> om=list.get(0); for(String key : om.keySet()) json.put(key, Common.invokeMethod(os[i], "get"+key.substring(0,1).toUpperCase()+key.substring(1))); i++; } } ja.add(json); } return ja; } }
发表评论
-
Java反编译插件——JD-Eclipse
2011-04-17 18:58 4386JD-Eclipse JD-Eclipse是一个Ecl ... -
Velocity与FreeMarker
2010-11-26 07:20 1160相比较FreeMarker而言,Velocity更加简单、轻量 ... -
Java Web开发常用jar包
2010-11-21 08:50 2484mail.jar与activation.jar 里面包含了a ... -
Json相关包及JSON使用注意事项
2010-06-03 18:54 1698使用JSON,在SERVLET或者STRUTS的ACTION中 ... -
Java Portlet入门
2010-03-03 12:33 1368当你访问iGoogl ...
相关推荐
3. List转换成Json 4. 对象转换为Json 5. 对象集合转换Json 6. 普通集合转换Json 7. DataSet转换为Json 8. Datatable转换为Json 9. DataReader转换为Json 10. 解析JSON字符串生成对象实体 11. 解析JSON数组生成对象...
例如,Jackson库提供了`ObjectMapper`类,可以方便地实现对象到JSON和JSON到对象的转换,同时还支持自定义序列化和反序列化行为。 在`JsonUtil`类中,我们可能看到以下代码片段: ```java import ...
这在反序列化JSON数据时非常有用,可以将JSON转换为Java中的实体类实例。 2. `getMap4Json(String jsonString)`:这个方法接收一个JSON字符串并将其转换为一个Map。由于JSON本质上就是一个键值对的集合,所以转换为...
2. **Java Bean到JSON转换**:相反,如果你有一个Java对象,比如业务逻辑处理后的结果,你可以使用`json-lib`将其转换为JSON字符串。这样,你可以方便地将这些数据发送到客户端,如浏览器,或者存储到支持JSON格式的...
`ezmorph-1.0.6.jar`库主要用于对象的转换,虽然它不是直接处理JSON的,但在处理JSON转换成特定类型的数据时可能会用到,例如将JSON字符串中的数字转换为整数或浮点数。 4. **Commons Logging**: `commons-...
在Java编程中,工具类(Util Classes)是程序员日常工作中不可或缺的部分,它们提供了一系列静态方法,用于执行常见的任务,如JSON解析、日期处理、字符串操作等。以下是对标题和描述中涉及的知识点的详细说明: 1....
总结,Android中的JSON转换通常依赖于如Gson这样的库,它们提供了方便的方法来在Java对象和JSON格式之间进行转换。通过创建工具类,我们可以简化代码并提高代码复用性。在实际项目中,还可以根据需求扩展`GsonUtil`...
Java 处理 JSON 格式数据的通用类可以将 JSON 字符串转换为 Java 对象,也可以将 Java 对象转换为 JSON 字符串。 在 Java 中,处理 JSON 格式数据的常用方法有两种:一是使用 Java 自带的 JSON 处理类,二是使用第...
3. **函数参数**:使用JSON类作为函数参数,可以接受各种类型的输入,增强了代码的通用性。比如,一个接受JSON对象并根据其内容执行不同操作的函数: ```cpp void processJson(const json& j) { if (j.is_object...
在C++中将结构体转换为JSON或XML,我们需要定义一个映射规则,将结构体的每个成员对应到JSON或XML的键值。这通常涉及到反射(reflection)的概念,即程序能够自我检查其结构。由于C++标准库不直接支持反射,我们通常...
本文档将详细介绍一个用于Java中处理JSON数据的通用类——`JsonUtil`,该类封装了一系列方法用于实现JSON与Java对象之间的转换。 #### 类结构及包引入 `JsonUtil`位于`com.linghui.common.util`包下。为了实现JSON...
它支持解析JSON字符串到JSON对象,以及将JSON对象转换回字符串。在Delphi中,你可以通过导入lkJSON库,然后调用其提供的方法来操作JSON数据。 要将数据集转换为JSON,通常需要以下步骤: 1. 初始化lkJSON库:在你...
本文将详细介绍如何使用Python脚本`jsonToLua.py`将JSON数据转换为Lua Table格式,并探讨相关概念和技术。 首先,JSON是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,但又具有自我描述性,易于人...
本教程将围绕如何使用Java的jar包将JSON转换为XML展开,主要涉及以下几个关键知识点: 1. JSON和XML的基本概念: - JSON是一种轻量级的数据交换格式,它允许数据以键值对的形式存储,易于人阅读和编写,同时也易于...
标题中的“spirng.json转换包”可能是指一个与Spring框架相关的JSON处理工具或库,用于在Spring应用中方便地进行JSON数据的转换和操作。在实际的开发中,JSON(JavaScript Object Notation)已经成为一种广泛使用的...
本压缩包“C#通用类数据库连接、日志、http类、json解析、xml、RTX接口调用”提供了C#编程中常用的一些核心功能模块,这些模块对于任何C#开发者来说都是至关重要的。以下将详细介绍每个模块的知识点: 1. **数据库...