import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 序列化对象为JSON格式 遵循JSON组织公布标准
*
* @date 2008/05/07
* @version 1.0.0
*/
public class JsonUtil {
/** Commons Logging instance. */
private static org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory
.getLog(JsonUtil.class);
/**
* @param obj 任意对象
* @return String
*/
public static String object2json(Object obj) {
StringBuilder json = new StringBuilder();
if (obj == null) {
json.append("\"\"");
} else if (obj instanceof String || obj instanceof Integer || obj instanceof Float
|| obj instanceof Boolean || obj instanceof Short || obj instanceof Double
|| obj instanceof Long || obj instanceof BigDecimal || obj instanceof BigInteger
|| obj instanceof Byte) {
json.append("\"").append(string2json(obj.toString())).append("\"");
} else if (obj instanceof Object[]) {
json.append(array2json((Object[]) obj));
} else if (obj instanceof List) {
json.append(list2json((List<?>) obj));
} else if (obj instanceof Map) {
json.append(map2json((Map<?, ?>) obj));
} else if (obj instanceof Set) {
json.append(set2json((Set<?>) obj));
} else {
json.append(bean2json(obj));
}
return json.toString();
}
/**
* @param bean bean对象
* @return String
*/
public static String bean2json(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 = object2json(props[i].getName());
String value = object2json(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();
}
/**
* @param list list对象
* @return String
*/
public static String list2json(List<?> list) {
StringBuilder json = new StringBuilder();
json.append("[");
if (list != null && list.size() > 0) {
for (Object obj : list) {
json.append(object2json(obj));
json.append(",");
}
json.setCharAt(json.length() - 1, ']');
} else {
json.append("]");
}
return json.toString();
}
/**
* @param array 对象数组
* @return String
*/
public static String array2json(Object[] array) {
StringBuilder json = new StringBuilder();
json.append("[");
if (array != null && array.length > 0) {
for (Object obj : array) {
json.append(object2json(obj));
json.append(",");
}
json.setCharAt(json.length() - 1, ']');
} else {
json.append("]");
}
return json.toString();
}
/**
* @param map map对象
* @return String
*/
public static String map2json(Map<?, ?> map) {
StringBuilder json = new StringBuilder();
json.append("{");
if (map != null && map.size() > 0) {
for (Object key : map.keySet()) {
json.append(object2json(key));
json.append(":");
json.append(object2json(map.get(key)));
json.append(",");
}
json.setCharAt(json.length() - 1, '}');
} else {
json.append("}");
}
return json.toString();
}
/**
* @param set 集合对象
* @return String
*/
public static String set2json(Set<?> set) {
StringBuilder json = new StringBuilder();
json.append("[");
if (set != null && set.size() > 0) {
for (Object obj : set) {
json.append(object2json(obj));
json.append(",");
}
json.setCharAt(json.length() - 1, ']');
} else {
json.append("]");
}
return json.toString();
}
/**
* @param s 参数
* @return String
*/
public static String string2json(String s) {
if (s == null)
return "";
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();
}
}
分享到:
相关推荐
- `commons-collections-3.2.1.jar`:提供集合操作的扩展,如映射、过滤等,有助于处理JSON中的数组和对象结构。 - `commons-logging-1.1.1.jar`:提供日志接口,用于记录json-lib库在运行过程中的信息和错误。 -...
总之,富文本编辑器是网页开发中不可或缺的工具,而JSON对象则是数据交换的标准格式。理解它们之间的关系和转换机制,对于开发和维护富文本编辑器功能的网站或应用至关重要。通过深入学习和实践,你可以掌握如何有效...
通过此工具,开发者可以高效地将接收到的JSON响应转化为可以直接操作的对象,提高开发效率。 该工具的工作原理大致如下:首先,它接收一个JSON字符串作为输入,然后解析JSON结构,识别出键值对,并根据这些键值对...
JSON文件通常以.js或.json为扩展名,其数据结构主要由键值对(key-value pairs)组成,支持数组(arrays)和对象(objects)。 标题中的"JSON文件查看器"是指一种专门用来查看JSON文件的工具,这种工具通常具备格式...
例如,使用JSON Lib可以方便地创建JSON对象,将Java对象转化为JSON格式,或者反向将JSON文本解析成Java对象。 在实际开发中,我们可以使用JSON Lib的`JSONArray`和`JSONObject`类来操作JSON数据,通过`parse()`方法...
例如,你可以将Java的HashMap、ArrayList等对象直接转换为JSON字符串,或者将JSON文本解析成Java对象,方便数据的序列化和反序列化。 2. **commons**:这可能指的是Apache Commons,一个包含大量Java工具类的项目,...
在开发或调试过程中,这样的工具非常有用,因为它能将复杂的JSON结构转化为易于理解的形式,类似于JavaScript对象,使得开发者可以快速检查和理解数据内容。 JSONView通常作为一个浏览器扩展或独立应用程序存在,它...
1. **commons-collections-3.2.1.jar**:这是Apache Commons Collections库,提供了大量的集合框架增强功能,包括各种实用工具类和算法,虽然在解析JSON中它不是直接必要的,但可能会被其他库用作辅助工具。...
3. **commons-lang-2.3.jar**:Apache Commons Lang是Java标准类库的补充,包含了一些实用的工具类,可能在数据转换过程中提供辅助功能。 4. **commons-beanutils-1.7.0.jar**:Apache Commons BeanUtils简化了...
- 使用JsonUtil将这个集合对象转化为JSON字符串。 - Servlet将JSON字符串设置为HTTP响应的body,设置适当的Content-Type为"application/json",然后返回给前端。 - 前端EXTJS Grid接收到响应后,自动解析JSON数据,...
`json-lib`是一个Java库,它提供了一种将Java对象转换为JSON格式,以及将JSON数据还原为Java对象的能力。在Web开发中,这个功能非常重要,因为服务器端处理的数据需要以某种形式传递到客户端,JSON由于其简洁性和...
例如,你可以将一个Java Map对象或自定义Java类实例转化为JSON字符串。 2. **JSON解析**:这个包提供了将JSON字符串反序列化为Java对象的能力。这在接收来自服务器的JSON响应后,将其转换为可操作的Java对象时非常...
这个库提供了处理JSON的API,可以用来解析JSON字符串为Java对象,或者将Java对象转换为JSON格式的字符串。在实际开发中,我们可以通过它轻松地进行JSON的序列化和反序列化。 5. **ezmorph-1.0.6.jar**:EZMorph库...
在将JSON数据转化为Java对象时,这个库可以提供便利的方法。 4. **json-lib-2.4-jdk15.jar**:这是Json-lib库的一个版本,它是一个Java JSON处理器,支持多种Java版本。Json-lib提供了将JSON与Java对象(如JavaBean...
`json-lib`提供了多种方法,可以将Java对象(如JavaBean)转化为JSON格式的字符串,也可以将JSON字符串反序列化为Java对象。 5. `ezmorph-1.0.6.jar`:EZMorph是Java的一个库,主要用于对象的动态转换。在JSON处理...
虽然它主要不是为JSON处理而设计的,但其中的一些工具类和方法可以辅助处理JSON数据,比如用于转换或验证数据。 2. **Apache Commons Lang**: Apache Commons Lang是一个实用工具类库,补充了Java语言核心库的...
5. **ezmorph-1.0.6.jar**:EZMorph库,主要用于对象之间的转换,为JSON Lib提供支持,使得非标准数据类型可以被转换成JSON Lib能处理的格式。 6. **commons-logging-1.1.1.jar**:Apache Commons Logging库,提供...
在解析和生成JSON过程中,可能会用到这些功能来辅助处理字符串和对象。 4. **commons-beanutils-1.9.3.jar**:Apache Commons BeanUtils库提供了一些便捷的方式来操作JavaBeans属性,使得在处理JSON与Java对象之间...
在C#编程中,经常需要将对象或者对象集合(如List)转换成JSON字符串,以便在网络间传输或者存储。反之,也需要将接收到的JSON字符串还原为C#对象。本篇将详细介绍如何在C#中实现类的List与Json语句的互相转化。 ...
它可以从字符串或输入流中读取JSON数据,并将其转化为`JSONObject`或`JSONArray`。这个过程称为反序列化。 `JSONException`是处理JSON操作时可能出现的异常,比如当JSON格式不正确或无法解析时,程序会抛出这个异常...