- 浏览: 7189387 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (397)
- 架构研究 (44)
- 网络协议-TCP/HTTP (20)
- SPRING (23)
- HIBERNATE 3 (30)
- STRUTS 2 (20)
- Java/J2se (25)
- Servlet/Jsp (9)
- 开发工具IDE (10)
- WEB服务器 (17)
- 前端--Java Script (33)
- 前端--CSS (7)
- OS--Linux (31)
- OS--MAC OS (19)
- MySQL数据库 (19)
- Oracle数据库 (11)
- 项目管理工具 (12)
- 数据报表技术 (4)
- 图像处理技术 (10)
- 其它综合技术 (13)
- 权限管理 (1)
- MyBatis (1)
- 网络安全 (6)
- IO (21)
- PostgreSQL (2)
- Eclipse RCP (1)
- GWT (1)
- 算法 (3)
- Storm (2)
- zookeeper (3)
- 消息 (1)
最新评论
-
bukebuhao:
已解决,打开文件太多。ulimit -n 上次临时生效后再次s ...
TFS(Taobao File System)配置dataServer、分区、挂载数据盘 -
bukebuhao:
ds重启后启动不了。报错信息如下,请大神帮助[2018-08- ...
TFS(Taobao File System)配置dataServer、分区、挂载数据盘 -
墨上清:
感谢,看完有了一个完整的知识网络。
Spring MVC 教程,快速入门,深入分析 -
云卷云舒灬:
谢谢,学到很多
Spring MVC 教程,快速入门,深入分析 -
luozhy:
非常感谢非常感谢
Project Web Access ActiveX控件 安装
2010-4-12 补:可以参看: http://jiangzhengjun.iteye.com/category/78136
这是一个工具类,不依赖于其它第三方的库,用于响应AJAX的请求时,把服务器端的一个对象(一般是POJO类,或是集合),封装成JSON格式,来响应AJAX的请求,也就是把这个对象,原样搬到客户端的浏览器内存中,可以用JS访问。
后面有可下载的ZIP包, 内有所有代码,包括测试的类。
这是 JsonUtil类部分:
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() { } }
- json.rar (4.4 KB)
- 下载次数: 528
评论
7 楼
wzwahl36
2015-10-27
http://www.atool.org/json2javabean.php json转pojo,一键打包下载~很赞!
6 楼
xzz7175327
2013-04-08
不错!顶lz
5 楼
add2ws
2011-04-05
lz好人 !
4 楼
justshare
2009-03-02
楼主小眼睛,色迷迷的眼神。。。扑倒
3 楼
czpae86
2008-12-28
2 楼
arpenker
2008-11-04
楼主,互联网就要这个味!
1 楼
我奋斗
2008-10-30
很强大!很好!
发表评论
-
在浏览器中解析Base64编码图像
2014-05-25 17:25 7990上一篇介绍中,我们将二进制文件(BLOB)保存为Base64 ... -
细说Java IO相关
2014-05-25 13:48 4825细说Java IO相关 概述 在大部分的行业系统或 ... -
Java IO 的类图
2014-05-25 13:43 2102Java IO 的类图 拿出来方便大家。Java IO表 ... -
Java IO流学习总结
2014-05-25 13:35 3489Java流操作有关的类或 ... -
JAVA多线程和并发基础面试问答
2014-05-17 23:58 3937原文链接 译文连接 ... -
Java开发字符界面程序
2014-01-14 15:27 2739做银行、保险等行业,需要开发柜面系统,使用unix终端进行 ... -
JVM 优秀文章
2013-11-29 11:16 2143JVM垃圾收集器使用调查:CMS最受欢迎 http:// ... -
Java写的数据库连接池
2013-10-19 22:42 0Java写的数据库连接池 impo ... -
Web应用程序中线程的启动和关闭问题
2013-09-12 18:49 3437我们知道静态变量是ClassLoader级别的,如果Web ... -
Java线程池知识
2013-04-08 10:39 26791. 引言合理利用线程池能够带来好处。第一:降低资源消耗。通 ... -
子类可以继承到父类上的注解吗--有结论了
2012-08-04 23:51 57645作者:赵磊 博客:http://elf8848.ite ... -
JDK 5 Annotation\注解\注释\自定义注解
2012-08-04 22:15 10915作者:赵磊 博客:ht ... -
Java Nio Buffer
2012-05-29 15:21 7127Buffer是特定基本类型元素的线性有限序列,它以及它的子类定 ... -
ScheduledExecutorService执行定时任务
2012-05-23 14:59 27792ScheduledExecutorService ... -
Java 高级知识
2012-05-18 18:34 15760Java 的一些高级知识你掌握了吗? 我最近在做一个网络通 ... -
字节序
2012-05-01 20:24 6803作者:赵磊 博客:http://elf8848.ite ... -
Java日志方案概述
2012-04-29 18:33 4953日志解决方案 ... -
Map的线程安全与否的相关文章
2010-05-20 22:09 3342为什么HashMap不是线程安全的?哪里不安全?不安全产生什 ... -
Map.Entry 类使用简介
2009-09-17 15:46 14656如何简便的遍历Map 你是否已经对每次从Map中取得关键字然 ... -
嵌套删除多级目录, 删除单级目录, 创建多级目录, 复制文件
2009-02-25 17:53 3473备一份自己用: /** * 嵌套删除多级目录 * ...
相关推荐
在处理JSON时,可能需要将JSON解析得到的数据转换成特定的对象类型,或者将Java对象转换成适合JSON格式的数据,这时候`ezmorph`就可以派上用场。它可以方便地将一种类型的数据转换成另一种类型,比如将字符串转成...
JavaBean是Java对象的一种规范,用于封装数据,而JsonString是一种轻量级的数据交换格式,常用于前后端交互。本篇将深入探讨JavaBean与JsonString之间的相互转换方法。 1. **什么是JavaBean** JavaBean是一种遵循...
6. **`ezmorph-1.0.6.jar`**:EZMorph库主要用于Java对象的动态转换,虽然不是直接用于JSON转换,但在需要将Java对象转换成适合JSON格式的类型时,可能会用到。 在实际应用中,如果你对JSON的结构有严格的要求,如...
在Java开发中,将数据对象(如Javabean、List、Map...同时,这些库还提供了对List和Map的转换支持,使得数组和映射结构的数据也能顺利转为JSON格式。在项目中引入这些依赖,可以极大地提高开发效率并保证转换的正确性。
通过Gson,我们可以方便地将一个Java Bean实例转化为JSON格式的字符串。以下是一个简单的例子: ```java import com.google.gson.Gson; public class User { private String name; private int age; // ...
4. **对象映射(对象-XML/JSON映射)**:这是一种将数据结构(如Bean)与数据格式(如XML或JSON)之间进行转换的技术。比如,使用Jackson库的`ObjectMapper`可以方便地将JSON字符串解析成Bean,反之亦然。 5. **...
例如,将一个`String`数组转换为JSON格式: ```java String[] names = {"Alice", "Bob", "Charlie"}; String jsonArrayString = gson.toJson(names); ``` 反之,将JSON数组解析为`String`数组: ```java String ...
当你从服务器获取到JSON格式的数据后,通常会希望将其映射到Java对象上,以便进行更方便的操作和处理。 标题中的“首字母大写的json串转为javabean实例”意味着我们需要处理JSON字符串中属性名首字母大写的情况。在...
在Web开发中,尤其是前后端分离的项目,经常需要将后端Java对象转换为JSON格式的数据,以便前端能够接收和解析。在Java中,最常用的JSON处理库之一是Jackson。 #### 转换步骤: 1. **创建JsonFactory实例**:使用...
1,先将接口返回的JSON,用gson.tojson(map)方法,将LinkedTreeMap对象转成String。 2,再通过gson.fromjson(string,type)方法,将String转成LinkedTreeMap。用到了Type type=new TypeToken(){}.getType; 3,再将...
GSON则是由谷歌提供的,它能够将Java对象自动转换成JSON格式,并且能够处理复杂的对象类型;jackson则以其模块化和灵活性著称。如果要避免“net.sf.json”包中所提到的问题,开发者应该考虑使用这些更为现代和活跃的...
JSON-B提供了Java Bean到JSON的自动绑定,而JSON-P提供了JSON解析和生成的API。 1. **将YAML转换为JSON**: - 首先,我们需要一个YAML字符串或YAML文件。使用SnakeYAML的`Yaml`类加载YAML数据。 - 然后,将YAML...
在实际开发中,这些转换方法可以方便地用于数据格式的统一,特别是在处理数据库字段名和Java对象属性之间的映射,或者在解析和生成JSON字符串时。确保代码遵循一致的命名规范可以提高代码的可读性,降低维护成本。...
2. `string2Json(String s)`:此方法将一个字符串转为JSON格式的字符串,确保特殊字符被转义。例如,双引号`"`变为`\\"`,反斜杠`\`变为`\\`等。这遵循JSON规范,防止字符串中包含的特殊字符导致解析错误。 3. `to...
JSON Lib提供了将Java对象转换为JSON格式和从JSON数据创建Java对象的功能。Ezmorph 1.0.6是一个Java库,主要用于对象的类型转换,它简化了在Java中将一个对象转换为另一种类型的过程。同时,描述中提及的"commons-...
接下来,关于JSON数据转换,Spring MVC提供了注解ResponseBody,使用这个注解可以将方法的返回值自动转换成JSON格式的响应体。这主要依赖于Spring MVC的自动消息转换机制,当返回值类型是String、int、Map、POJO等时...
return gson.fromJson(gson.toJson(map), beanClass); } public static Map, Object> objectToMap(Object obj) { if (obj == null) { return null; } Gson gson = new Gson(); return gson.fromJson(gson.to...
springboot中参数进行驼峰与下划线的自动转换配置,实现参数传入时是下划线、java后台接收变成驼峰、返回前端又转为下划线
Java lambda list转换map时,把多个参数拼接作为key操作 Java lambda list转换map时,把多个参数拼接作为key操作是Java开发中常见的操作。下面将详细介绍该操作的实现方法和需要注意的两个大坑。 一、Java lambda ...