`
guyinglong
  • 浏览: 73872 次
  • 性别: Icon_minigender_1
  • 来自: 江西
社区版块
存档分类
最新评论

JSON辅助类,可以把一些对象和集合转化为标准的JSON格式

    博客分类:
  • json
阅读更多
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();   
  }   
}  
分享到:
评论

相关推荐

    使用json-lib将java对象转换成json字符串

    - `commons-collections-3.2.1.jar`:提供集合操作的扩展,如映射、过滤等,有助于处理JSON中的数组和对象结构。 - `commons-logging-1.1.1.jar`:提供日志接口,用于记录json-lib库在运行过程中的信息和错误。 -...

    自用富文本编辑器+json对象各种互转方法

    总之,富文本编辑器是网页开发中不可或缺的工具,而JSON对象则是数据交换的标准格式。理解它们之间的关系和转换机制,对于开发和维护富文本编辑器功能的网站或应用至关重要。通过深入学习和实践,你可以掌握如何有效...

    Json字符串生成实体对象工具

    通过此工具,开发者可以高效地将接收到的JSON响应转化为可以直接操作的对象,提高开发效率。 该工具的工作原理大致如下:首先,它接收一个JSON字符串作为输入,然后解析JSON结构,识别出键值对,并根据这些键值对...

    JSON文件查看器,用于json文件的查看

    JSON文件通常以.js或.json为扩展名,其数据结构主要由键值对(key-value pairs)组成,支持数组(arrays)和对象(objects)。 标题中的"JSON文件查看器"是指一种专门用来查看JSON文件的工具,这种工具通常具备格式...

    json所需所有jar包

    例如,使用JSON Lib可以方便地创建JSON对象,将Java对象转化为JSON格式,或者反向将JSON文本解析成Java对象。 在实际开发中,我们可以使用JSON Lib的`JSONArray`和`JSONObject`类来操作JSON数据,通过`parse()`方法...

    java json依赖包(完整直接可用版)

    例如,你可以将Java的HashMap、ArrayList等对象直接转换为JSON字符串,或者将JSON文本解析成Java对象,方便数据的序列化和反序列化。 2. **commons**:这可能指的是Apache Commons,一个包含大量Java工具类的项目,...

    jsonview.exe jsonview

    在开发或调试过程中,这样的工具非常有用,因为它能将复杂的JSON结构转化为易于理解的形式,类似于JavaScript对象,使得开发者可以快速检查和理解数据内容。 JSONView通常作为一个浏览器扩展或独立应用程序存在,它...

    java解析json格式字符串所需jar包

    1. **commons-collections-3.2.1.jar**:这是Apache Commons Collections库,提供了大量的集合框架增强功能,包括各种实用工具类和算法,虽然在解析JSON中它不是直接必要的,但可能会被其他库用作辅助工具。...

    JAVA转换JSON jar

    3. **commons-lang-2.3.jar**:Apache Commons Lang是Java标准类库的补充,包含了一些实用的工具类,可能在数据转换过程中提供辅助功能。 4. **commons-beanutils-1.7.0.jar**:Apache Commons BeanUtils简化了...

    ext json请求java后台返回集合数据

    - 使用JsonUtil将这个集合对象转化为JSON字符串。 - Servlet将JSON字符串设置为HTTP响应的body,设置适当的Content-Type为"application/json",然后返回给前端。 - 前端EXTJS Grid接收到响应后,自动解析JSON数据,...

    json-lib所用的jar包

    `json-lib`是一个Java库,它提供了一种将Java对象转换为JSON格式,以及将JSON数据还原为Java对象的能力。在Web开发中,这个功能非常重要,因为服务器端处理的数据需要以某种形式传递到客户端,JSON由于其简洁性和...

    net.sft.json

    例如,你可以将一个Java Map对象或自定义Java类实例转化为JSON字符串。 2. **JSON解析**:这个包提供了将JSON字符串反序列化为Java对象的能力。这在接收来自服务器的JSON响应后,将其转换为可操作的Java对象时非常...

    json处理全部jar文件

    这个库提供了处理JSON的API,可以用来解析JSON字符串为Java对象,或者将Java对象转换为JSON格式的字符串。在实际开发中,我们可以通过它轻松地进行JSON的序列化和反序列化。 5. **ezmorph-1.0.6.jar**:EZMorph库...

    json运行所必须的jar包

    在将JSON数据转化为Java对象时,这个库可以提供便利的方法。 4. **json-lib-2.4-jdk15.jar**:这是Json-lib库的一个版本,它是一个Java JSON处理器,支持多种Java版本。Json-lib提供了将JSON与Java对象(如JavaBean...

    javabean和json互转所需的6个包

    `json-lib`提供了多种方法,可以将Java对象(如JavaBean)转化为JSON格式的字符串,也可以将JSON字符串反序列化为Java对象。 5. `ezmorph-1.0.6.jar`:EZMorph是Java的一个库,主要用于对象的动态转换。在JSON处理...

    json依赖包json依赖包json依赖包

    虽然它主要不是为JSON处理而设计的,但其中的一些工具类和方法可以辅助处理JSON数据,比如用于转换或验证数据。 2. **Apache Commons Lang**: Apache Commons Lang是一个实用工具类库,补充了Java语言核心库的...

    javajson包

    5. **ezmorph-1.0.6.jar**:EZMorph库,主要用于对象之间的转换,为JSON Lib提供支持,使得非标准数据类型可以被转换成JSON Lib能处理的格式。 6. **commons-logging-1.1.1.jar**:Apache Commons Logging库,提供...

    json工具jar包(java)

    在解析和生成JSON过程中,可能会用到这些功能来辅助处理字符串和对象。 4. **commons-beanutils-1.9.3.jar**:Apache Commons BeanUtils库提供了一些便捷的方式来操作JavaBeans属性,使得在处理JSON与Java对象之间...

    类的List与Json的互转.docx

    在C#编程中,经常需要将对象或者对象集合(如List)转换成JSON字符串,以便在网络间传输或者存储。反之,也需要将接收到的JSON字符串还原为C#对象。本篇将详细介绍如何在C#中实现类的List与Json语句的互相转化。 ...

    Android处理JSON数据-JSON打包.pdf

    它可以从字符串或输入流中读取JSON数据,并将其转化为`JSONObject`或`JSONArray`。这个过程称为反序列化。 `JSONException`是处理JSON操作时可能出现的异常,比如当JSON格式不正确或无法解析时,程序会抛出这个异常...

Global site tag (gtag.js) - Google Analytics