- 浏览: 228433 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Navee:
抄来抄去,还是没有实质解决问题
Ext 树.叶子查找与非叶子查找 -
haizhiguang:
我按照你的代码自己写了一个试试,没看出我的代码跟你的有什么区别 ...
JAVA 鼠标画直线举行椭圆 -
WHW1984:
整个工程目录结构是咋样的 兄弟
Jetty -- 安全认证 -- 三种配置方法 -
shixianwei:
...
Jetty Oracle DataSource Config(Jetty Oracle 数据源配置) -
cpusoft:
http://cuiyingfeng.blog.ccidnet ...
JNI(java 调用 本地接口)Tomcat的JNI库加载问题解决办法
绿色版,无污染,无需下载第三方包.转自某某博客.
447. }
package json; import java.lang.reflect.Method; import java.util.Collection; import java.util.Map; import java.util.Set; /** * 作者 赵磊 * * JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式 除了字符 ",\,/ * 和一些控制符(\b,\f,\n,\r,\t)需要编码外,其他 Unicode 字符可以直接输出 Object 对象在 JSON 中是用 {} * 包含一系列无序的 Key-Value 键值对表示的,实际上此处的 Object 相当于 Java 中的 Map<String, Object>,而不是 * Java 的 Class 。注意 Key 只能用 String 表示。 * * Prototype提供了 evalJSON() 方法,能直接将服务器返回的 JSON 文本变成一个 JavaScript 变量 * * */ public final class JsonUtil { /** * 把对象封装为JSON格式 * * @param o * 对象 * @return JSON格式 */ @SuppressWarnings("unchecked") public static String toJson(final Object o) { if (o == null) { return "null"; } if (o instanceof String) //String { return string2Json((String) o); } if (o instanceof Boolean) //Boolean { return boolean2Json((Boolean) o); } if (o instanceof Number) //Number { return number2Json((Number) o); } if (o instanceof Map) //Map { return map2Json((Map<String, Object>) o); } if (o instanceof Collection) //List Set { return collection2Json((Collection) o); } if (o instanceof Object[]) //对象数组 { return array2Json((Object[]) o); } if (o instanceof int[])//基本类型数组 { return intArray2Json((int[]) o); } if (o instanceof boolean[])//基本类型数组 { return booleanArray2Json((boolean[]) o); } if (o instanceof long[])//基本类型数组 { return longArray2Json((long[]) o); } if (o instanceof float[])//基本类型数组 { return floatArray2Json((float[]) o); } if (o instanceof double[])//基本类型数组 { return doubleArray2Json((double[]) o); } if (o instanceof short[])//基本类型数组 { return shortArray2Json((short[]) o); } if (o instanceof byte[])//基本类型数组 { return byteArray2Json((byte[]) o); } if (o instanceof Object) //保底收尾对象 { return object2Json(o); } throw new RuntimeException("不支持的类型: " + o.getClass().getName()); } /** * 将 String 对象编码为 JSON格式,只需处理好特殊字符 * * @param s * String 对象 * @return JSON格式 */ static String string2Json(final String s) { final StringBuilder sb = new StringBuilder(s.length() + 20); sb.append('\"'); for (int i = 0; i < s.length(); i++) { final char c = s.charAt(i); switch (c) { case '\"': sb.append("\\\""); break; 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; default: sb.append(c); } } sb.append('\"'); return sb.toString(); } /** * 将 Number 表示为 JSON格式 * * @param number * Number * @return JSON格式 */ static String number2Json(final Number number) { return number.toString(); } /** * 将 Boolean 表示为 JSON格式 * * @param bool * Boolean * @return JSON格式 */ static String boolean2Json(final Boolean bool) { return bool.toString(); } /** * 将 Collection 编码为 JSON 格式 (List,Set) * * @param c * @return */ static String collection2Json(final Collection<Object> c) { final Object[] arrObj = c.toArray(); return toJson(arrObj); } /** * 将 Map<String, Object> 编码为 JSON 格式 * * @param map * @return */ static String map2Json(final Map<String, Object> map) { if (map.isEmpty()) { return "{}"; } final StringBuilder sb = new StringBuilder(map.size() << 4); //4次方 sb.append('{'); final Set<String> keys = map.keySet(); for (final String key : keys) { final Object value = map.get(key); sb.append('\"'); sb.append(key); //不能包含特殊字符 sb.append('\"'); sb.append(':'); sb.append(toJson(value)); //循环引用的对象会引发无限递归 sb.append(','); } // 将最后的 ',' 变为 '}': sb.setCharAt(sb.length() - 1, '}'); return sb.toString(); } /** * 将数组编码为 JSON 格式 * * @param array * 数组 * @return JSON 格式 */ static String array2Json(final Object[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); //4次方 sb.append('['); for (final Object o : array) { sb.append(toJson(o)); sb.append(','); } // 将最后添加的 ',' 变为 ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String intArray2Json(final int[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final int o : array) { sb.append(Integer.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String longArray2Json(final long[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final long o : array) { sb.append(Long.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String booleanArray2Json(final boolean[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final boolean o : array) { sb.append(Boolean.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String floatArray2Json(final float[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final float o : array) { sb.append(Float.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String doubleArray2Json(final double[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final double o : array) { sb.append(Double.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String shortArray2Json(final short[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final short o : array) { sb.append(Short.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String byteArray2Json(final byte[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final byte o : array) { sb.append(Byte.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } public static String object2Json(final Object bean) { //数据检查 if (bean == null) { return "{}"; } final Method[] methods = bean.getClass().getMethods(); //方法数组 final StringBuilder sb = new StringBuilder(methods.length << 4); //4次方 sb.append('{'); for (final Method method : methods) { try { final String name = method.getName(); String key = ""; if (name.startsWith("get")) { key = name.substring(3); //防死循环 final String[] arrs = { "Class" }; boolean bl = false; for (final String s : arrs) { if (s.equals(key)) { bl = true; continue; } } if (bl) { continue; //防死循环 } } else if (name.startsWith("is")) { key = name.substring(2); } if (key.length() > 0 && Character.isUpperCase(key.charAt(0)) && method.getParameterTypes().length == 0) { if (key.length() == 1) { key = key.toLowerCase(); } else if (!Character.isUpperCase(key.charAt(1))) { key = key.substring(0, 1).toLowerCase() + key.substring(1); } final Object elementObj = method.invoke(bean); //System.out.println("###" + key + ":" + elementObj.toString()); sb.append('\"'); sb.append(key); //不能包含特殊字符 sb.append('\"'); sb.append(':'); sb.append(toJson(elementObj)); //循环引用的对象会引发无限递归 sb.append(','); } } catch (final Exception e) { //e.getMessage(); throw new RuntimeException("在将bean封装成JSON格式时异常:" + e.getMessage(), e); } } if (sb.length() == 1) { return bean.toString(); } else { sb.setCharAt(sb.length() - 1, '}'); return sb.toString(); } } private JsonUtil() { } } }
447. }
发表评论
-
模型是是搜索
2011-03-17 00:37 1075#!/usr/bin/env python # -*- co ... -
Java 调用浏览器访问指定URL. 多平台
2011-02-16 13:46 2865/////////////////////////////// ... -
Java Web 项目读取配置文件
2010-10-28 18:18 2794在开发过程中,我们经常会遇到读取配置文件的情况,对于配置文件的 ... -
j=j++与j=++j的区别
2010-09-21 16:28 1733jvm里面有两个存储区,一个是暂存区(是一个堆栈),另一个是变 ... -
JSON与JAVA数据的转换
2010-09-15 14:29 947JSON与JAVA数据的转换 关键字: json java ... -
对web.xml 的几点配置心得。包括mime-mapping
2010-08-31 23:09 18931.指定了自己的javaEncoding (参考 http:/ ... -
JasperReports学习笔记
2010-08-30 13:03 1273reference: http://www.javaworl ... -
JFreeChart 教程二
2010-08-25 16:22 1115JFreeChart是一组功能强大、灵活易用的Java绘图AP ... -
JFreeChart 教程一
2010-08-25 16:20 950以下是需要画一个折线图查到的资料(放到这里备用): 原文地址 ... -
我和iText的第一次亲密接触
2010-08-19 22:58 1348要生成pdf文件,在网上查了下资料,首选iText,跟着大家走 ... -
引入多个Jar~
2010-08-19 13:49 502Zhe画 13:55:50 java命令引入jar时可以- ... -
Jetty7 Continuation 学习(一)
2010-08-19 08:44 1839Jetty7发布了,Jetty7支持servlet 2.5,且 ... -
jetty快速入门
2010-08-17 15:13 2791(0) Jetty 是一个开源的ser ... -
JNI(java 调用 本地接口)Tomcat的JNI库加载问题解决办法
2010-08-15 10:17 6655Tomcat的Release Notes 里有这么一段话: = ... -
Java入门--认识理解Java中native方法
2010-08-15 09:38 919Java不是完美的,Jav ... -
用digester简化xml文档处理
2010-08-15 00:21 958用digester简化xml文档处理java 2010-05- ... -
关于URL特殊符号的问题~
2010-08-14 15:20 1008HTML 格式编码的实用工具类。该类包含了将 String 转 ... -
InheritableThreadLocal 线程变量
2010-07-29 11:40 2261ThreadLocal有个缺陷,在子线程里无法访问父线程的变量 ... -
java基础补疑
2010-07-28 11:53 790java语言的关键字,变量修饰符,如果用transient声明 ... -
转自Javaeye论坛~作者
2010-07-28 09:53 901只身在他乡,常常想起我的父亲,在我们当地他是出名的木匠师傅,一 ...
相关推荐
JsonUtil json工具类 JsonUtil json工具类
Google json工具类,将java对象装换为json,支持泛型和任意类型
JSONUtil java工具类,快速方便读取JSON
JSON jar包含源码及应用类JSONUtil,可以直接查看源码不用反编译,并且可以直接调用JSONUtil工具类进行,JSon字符串转换为JavaBean ,并可以把JavaBean转换为JSon字符串。
java解析Json字符串java解析Json字符串java解析Json字符串java解析Json字符串
只需要传入数据模型,即可返回成json对象的数据,里面还包括一些格式化工具
主要介绍了Java实现的JSONUtil工具类与用法,结合实例形式分析了Java操作json格式数据工具类JSONUtil的定义与简单使用技巧,需要的朋友可以参考下
java中将实体类转化成json对象的类 Java的JsonUtil.java java转化实体类为json的工具
json处理工具类json处理工具类json处理工具类json处理工具类
自己写的java json 生成工具,lyz包下面的lyzjson是我自己写的,util包下面的JsonUtil是老师写的。看下谁的好用点。多提建议,谢谢。
不需要其他jar包,字符串一json之间转换,maptojson listtojson settojson等
一个json相互转换的万能java类(JsonUtil.java), 这个下面就是万能转换类的方法注释,懂java的相信都能看懂。 /** *//** * 从一个JSON 对象字符格式中得到一个java对象 * @param jsonString * @param ...
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,
Json的一个2个工具类,用于Json字符串和Object、List、HashMap的转换。
json工具类,基于com.google.code.gson封装的json转换工具类
一个自制的json转换jar 直接调用JsonFactory.toJson()方法可将javaBean转换成json
JsonUtil字符串和对象间转换工具类
json 工具类 转换 获取泛型的Collection Type JavaType javaType = mapper.getTypeFactory().constructParametricType( collectionClass, elementClasses);
并且在平时开发中会遇到各种各样通用的一些功能,比如对json的处理,对String对象的处理,对Excel文件的处理,MD5加密处理,Bean对象处理等等,这些常用并通用的方法可以被封装成一个个工具类如StringUtil,...