- 浏览: 209456 次
- 性别:
- 来自: 北京
最新评论
-
Relucent:
likaiyihou51 写道The constructor ...
获得Hibernate Criteria实际SQL的方法 -
likaiyihou51:
The constructor CriteriaJoinWal ...
获得Hibernate Criteria实际SQL的方法 -
likaiyihou51:
大侠 我copy了这个代码 又个问题,能给看一下吗
获得Hibernate Criteria实际SQL的方法 -
haisee:
管用,Firefox和Chrom验证通过。
Javascript设置和获取Textarea的光标位置的方法 -
wanghaosvse:
请问楼主,有没有跟数据库同步的动态加载
带选择框的JS树控件2 (为JSTree再次提速)
/** * JSON 构造器类,可以将Java对象映射为JSON对象 * @author yyl * @datetime 2005-12-11 * @version 0.9 */ public class JsonBuilder { //排除的字段 private Set<String> excludeFields = new HashSet<String>(); private static final Object EMPTY_OBJECT_ARRAY[] = new Object[0]; public JsonBuilder() { excludeFields.add("class"); excludeFields.add("declaringClass"); excludeFields.add("metaClass"); } /** * 转换成JSON时需要排除的字段 * @param excludes */ public void setExcludeFields(String... excludes) { for (String exclude : excludes) { excludeFields.add(exclude); } } /** * 将Java对象转化为JSON对象 * @param obj java对象 * @return js对象 */ public String encode(Object object) { return encodeBasic(object); } /** * 将Java对象转化为JSON对象 * @param obj java对象 * @return js对象 */ private String encodeBasic(Object object) { // basic if (object == null) { return encodeNULL(); } else if (object instanceof String) { return encodeString((String) object); } else if (object instanceof Boolean) { return encodeBoolean((Boolean) object); } else if (object instanceof Number) { return encodeNumber((Number) object); } else if (object instanceof Map) { return encodeMap((Map) object); } else if (object instanceof Iterable) { return encodeIterable((Iterable) object); } else if (object instanceof Object[]) {// object.getClass().isArray() return encodeArray((Object[]) object); } else if (object instanceof java.util.Date) { return encodeDate((java.util.Date) object); } else { Class clazz = object.getClass(); if (clazz.isInterface()) { return encodeEmpty(); } if (clazz.isEnum()) { return encodeEnum((java.lang.Enum) object); } else { return encodeAdapter(object); } } } /** * 返回一个NULL对象 * @return javascript null对象 */ private String encodeNULL() { return "null"; } /** * 将Java-String对象转化为JSON对象 * @param string 字符串对象 * @return javascript string对象 */ private String encodeString(String string) { StringBuilder sbr = new StringBuilder(string.length() * 4); sbr.append("'"); for (int i = 0, sz = string.length(); i < sz; i++) { char ch = string.charAt(i); // handle unicode if (ch > 0xfff) { sbr.append("\\u"); sbr.append(hex(ch)); } else if (ch > 0xff) { sbr.append("\\u0"); sbr.append(hex(ch)); } else if (ch > 0x7f) { sbr.append("\\u00"); sbr.append(hex(ch)); } else if (ch < 32) { switch (ch) { case '\b': sbr.append('\\'); sbr.append('b'); break; case '\n': sbr.append('\\'); sbr.append('n'); break; case '\t': sbr.append('\\'); sbr.append('t'); break; case '\f': sbr.append('\\'); sbr.append('f'); break; case '\r': sbr.append('\\'); sbr.append('r'); break; default: if (ch > 0xf) { sbr.append("\\u00"); sbr.append(hex(ch)); } else { sbr.append("\\u000"); sbr.append(hex(ch)); } break; } } else { // line. switch (ch) { case '\'': sbr.append('\\'); sbr.append('\''); break; case '"': sbr.append('\\'); sbr.append('"'); break; case '\\': sbr.append('\\'); sbr.append('\\'); break; default: sbr.append(ch); break; } } } sbr.append("'"); return sbr.toString(); } private String hex(char ch) { return Integer.toHexString(ch).toUpperCase(Locale.ENGLISH); } /** * 将Java-Boolean对象转化为JSON对象 * @param obj 字符串对象 * @return javascript Boolean对象 */ private String encodeBoolean(Boolean b) { return b.toString(); } /** * 将Java-Number对象转化为JSON对象 * @param n 数字对象 * @return javascript Number对象 */ private String encodeNumber(Number n) { return n.toString(); } /** * 将Java-Map对象转化为JSON对象 * * @param map Map对象 * @return javascript Map对象(简单对象) */ private String encodeMap(Map map) { StringBuilder sbr = new StringBuilder(); sbr.append("{"); boolean isFirst = true; for (java.util.Iterator it = map.entrySet().iterator(); it.hasNext();) { if (isFirst) { isFirst = false; } else { sbr.append(","); } Map.Entry entry = (Map.Entry) it.next(); sbr.append(encodeBasic(entry.getKey())).append(":").append(encodeBasic(entry.getValue())); } sbr.append("}"); return sbr.toString(); } /** * 将Java-Iterable对象转化为JSON对象 * @param iterable Iterable对象 * @return javascript Array对象 */ private String encodeIterable(java.lang.Iterable iterable) { StringBuilder sbr = new StringBuilder(); sbr.append("["); int index = 0; for (java.util.Iterator it = iterable.iterator(); it.hasNext();) { if ((index++) > 0) { sbr.append(","); } sbr.append(encodeBasic(it.next())); } sbr.append("]"); return sbr.toString(); } /** * 将Java-数组对象转化为JSON对象 * @param obj 数组对象 * @return javascript Array对象 */ private String encodeArray(Object[] array) { StringBuilder sbr = new StringBuilder(); sbr.append("["); for (int index = 0; index < array.length; index++) { if (index > 0) { sbr.append(","); } Object o = array[index]; sbr.append(encodeBasic(o)); } sbr.append("]"); return sbr.toString(); } /** * 将Java-Date对象转化为JSON对象 * @param date 日期对象 * @return javascript Date对象 */ private String encodeDate(java.util.Date date) { return new StringBuilder().append("new Date(").append(date.getTime()).append(")").toString(); } /** * 将Java-Enum对象转化为JSON对象 * @param e 枚举对象 * @return javascript Date对象 */ private String encodeEnum(java.lang.Enum e) { return "'" + e.name() + "'"; } /** * 返回一个JSON简单对象 * @return javascript 简单对象 */ private String encodeEmpty() { return "{}"; } /** * 将Java对象转化为JSON对象 * @param object Java对象 * @return 如果适配器能解析,则返回解析后的JSON对象,否则返回一个默认Empty JSON对象 */ private String encodeAdapter(Object object) { try { Map<String, Object> proxy = new HashMap<String, Object>(); Class clazz = object.getClass(); if (clazz == null) { throw new IllegalArgumentException("No bean class specified"); } proxy.put("class", clazz.getName()); PropertyDescriptor[] descriptors = null; try { descriptors = Introspector.getBeanInfo(clazz).getPropertyDescriptors(); } catch (IntrospectionException e) { descriptors = new PropertyDescriptor[0]; } for (int i = 0, j = descriptors.length; i < j; i++) { PropertyDescriptor descriptor = descriptors[i]; String key = descriptor.getName(); //排除的字段 if (excludeFields.contains(key)) { continue; } Method method = descriptor.getReadMethod(); if (descriptor.getReadMethod() != null) { Class<?> type = descriptor.getPropertyType(); if (type.isEnum()) { continue; } Object value = method.invoke(object, EMPTY_OBJECT_ARRAY); proxy.put(key, value); } } return encodeMap(proxy); } catch (Exception ex) { return encodeEmpty(); } } }
使用方法试例:
JsonBuilder jber = new JsonBuilder();
jber.setExcludeFields("class","className");//排除的Bean属性
String json = jber.encode(bean);
System.out.println(json);
评论
5 楼
niyong
2010-01-11
直接使用gson就可以搞定对象和JSON的相互转换
4 楼
bevis.cn
2010-01-11
JsonObject我就觉得做得不错呀,只是一些特定格式的,需要自己定制转换器
3 楼
regular
2010-01-11
应该已经有Java <-> JSON的工具了吧?而且还能够处理comment之类的东西。
2 楼
ahuango
2010-01-08
思路跟flexjson 有点像
1 楼
liuqing9382
2010-01-08
留记号!!!
发表评论
-
Ehcache 的配置(不使用配置文件)
2014-07-17 12:32 4563EhCache是一个开放源码的,基于标准的高速缓存系统。 ... -
《Java Concurrency In Practice》目录
2013-07-30 13:43 0Java Concurrency In Practice ... -
获得Hibernate Criteria实际SQL的方法
2011-12-15 14:59 2954对于Hibernate QBC查询,有时候我们会遇到需要获得最 ... -
Spring--quartz中cronExpression配置说明
2010-08-10 17:26 1449字段 允许值 允许的特殊字符 秒 0-59 , - * / ... -
常见的HTTP 状态代码
2010-05-27 11:26 833HTTP 状态代码 如果向您的服务器发出了某项请求要求显示 ... -
Mondrian Schema.xml 简要说明
2009-12-10 09:50 2340Mondrian是一个用Java写成 ... -
监控和剖析数据库操作 -- P6Spy、SQL Profiler、IronTrack SQL 使用简介
2009-12-03 12:51 1010原文来源:http://www.ibm.com/develop ... -
Apache commons简介
2009-11-25 15:32 1139Apache Commons 是一个非常 ... -
使用 CAS 在 Tomcat 中实现单点登录
2009-10-30 11:14 1069单点登录(Single Sign On , 简称 SSO )是 ... -
深入了解JAVA可变长度的参数(Varargs)
2009-10-22 14:07 2431(本文转载自csdn) 到J2SE 1.4为止,一直无法在J ... -
JAVA5新特性
2009-10-22 13:44 1502Java 5.0发布了,许多人都将开始使用这个JDK版本的一些 ...
相关推荐
标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...
答:将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象] 从Java对象生成JSON的过程称为 [序列化Java对象到JSON] 为什么用它? 答:我数据库中的主键是使用雪花算法生成的,就是因为用id的位数太多,导致在...
Gson是Google提供的一个Java库,可以将Java对象转换为JSON字符串,反之亦然。首先,需要在项目中引入Gson库,然后可以使用以下方法进行转换: 将Java对象转换为JSON字符串: ```java Gson gson = new Gson(); ...
1. 将Java对象转换为JSON字符串,同样使用`ObjectMapper`: ```java User john = new User(1, "John", "john@example.com"); String johnJson = mapper.writeValueAsString(john); ``` 2. 对于集合类型,如List或...
这里我们以Jackson为例,它提供了强大的功能,包括将Java对象序列化为JSON和反序列化为Java对象。 1. **引入Jackson库** 在你的项目中,你需要添加Jackson的依赖。如果是Maven项目,可以在pom.xml文件中加入以下...
在Java开发中,将Java对象转化为JSON(JavaScript Object Notation)格式是常见的需求,尤其是在Web服务和前后端数据交互中。JSON是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。JSON...
例如,JSON的数组将映射到`List`或`Array`,嵌套对象映射到内部类。 3. **可空值处理**:JSON中的`null`值在Java中可能需要特殊处理,如转换为Java的`null`或特定的默认值。 4. **自定义序列化与反序列化**:某些...
`fromObject`方法将Java对象转换为`JSONObject`,然后调用`toString()`将其转化为JSON字符串。 ### 进阶使用 - **处理嵌套结构**:`JSONObject`也支持嵌套结构,即JSON对象内包含其他JSON对象或数组。可以通过递归...
通过`writeValueAsString()`方法,我们可以轻松地将任何Java对象转换为JSON格式的字符串。 ```java ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(yourJavaObject);...
要将一个Java对象转换为JSON字符串,我们可以使用`ObjectMapper`的`writeValueAsString()`方法。假设我们有一个简单的User类: ```java public class User { private String name; private int age; // getters...
- JSON序列化:将Java对象转换为JSON字符串,如使用Jackson的`ObjectMapper.writeValueAsString()`方法。 3. **Java对象转换**: - 数据模型(Data Model):定义Java类来表示JSON数据结构。 - 注解:如Jackson...
除了将JSON转换为Java对象,我们还可以使用`ObjectMapper`将Java对象转换回JSON字符串,这对于前端展示或存储数据非常有用: ```java String json = mapper.writeValueAsString(outerObject); ``` 6. **异常...
然后,使用`JSONObject.toBean()`方法将JSON转换为Java对象: ```java MainObject mainObject = (MainObject) JSONObject.toBean(jsonObject, MainObject.class); ``` 这会自动将JSON中的数据填充到对应的Java...
例如,将Java对象转换为JSON字符串: ```java ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(yourObject); ``` 反向转换,将JSON字符串解析为Java对象: ```...
这些库提供了将Java对象序列化为JSON字符串以及反序列化JSON回Java对象的功能。具体使用哪个库,可以根据项目需求和个人喜好选择。这里我们以Jackson库为例进行讲解,因为Jackson提供了强大的功能且使用简便。 1. *...
本文将详细介绍如何将JSON字符串直接转换为Java对象,特别是涉及到多层List集合的情况。在本例中,我们将使用`net.sf.json.JSONObject`类来实现这一功能。 首先,确保你的项目中已经引入了必要的库。在使用`...
`json-lib` 是一个 Java 库,它提供了将 JSON 格式的数据转换为 Java 对象,以及将 Java 对象转换为 JSON 格式数据的功能。在 Java 开发中,`json-lib` 是一个常用的 JSON 处理工具,尤其适用于需要处理复杂 JSON ...
例如,我们可以通过`Gson().toJson()`方法将一个Java对象转化为JSON字符串,通过`Gson().fromJson()`方法将JSON字符串转化为对应的Java对象。 2. **Jackson库**:另一个常用的JSON处理库是Jackson,它提供了丰富的...
`fromObject()`是org.json库提供的方法,它能将Java对象转换为JSON表示。 5. 最后,返回排序后的JSONObject。 这个方法只适用于单层JSON对象,即JSON对象中不包含嵌套的JSON对象或数组。如果需要处理嵌套的JSON...
要将JSON字符串反序列化为Java对象,可以使用`readValue`方法: ```java YourJavaClass yourObject = mapper.readValue(jsonString, YourJavaClass.class); ``` 2. **Gson库** Gson是Google提供的另一个JSON...