使用Gson的Json转换工具类

本文介绍了一个基于Gson库实现的Java工具类,用于将各种Java对象转换成JSON字符串。该工具类支持多种类型的数据结构,包括基本类型、日期、数组、列表、集合、Map等,并提供了排除特定字段的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用Gson的Json转换工具类

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class JsonUtil {

  /**
    * @param obj
    *            任意对象
    * @return String
    */
  public static int i = 0;

  public static String object2json(Object obj, List<String> del) {
      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
      /* || obj instanceof Date */) {
        json.append("\"").append(string2json(obj.toString())).append("\"");
      } else if (obj instanceof Object[]) {
        json.append(array2json((Object[]) obj, del));
      } else if (obj instanceof List) {
        json.append(list2json((List<?>) obj, del));
      } else if (obj instanceof Map) {
        json.append(map2json((Map<?, ?>) obj, del));
      } else if (obj instanceof Set) {
        json.append(set2json((Set<?>) obj, del));
      } else if (obj instanceof Date) {
        json.append("\"").append(string2json(obj.toString())).append("\"");
      } else {
        json.append(bean2json(obj, del));
      }
      return json.toString();
  }

  /**
    * 是否属于正常的bean属性
    *
    * @param obj
    */
  public static boolean isNormal(Object obj) {
      if (obj == null) {
        return false;
      } 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
            || obj instanceof Date) {
        return true;
      }
      return false;
  }

  public static boolean isNormal(String obj) {
      if (obj == null) {
        return false;
      } else if (obj
            .matches("(String|Integer|Float|Boolean|Short|Double|LongBigDecimal|BigInteger|Byte|Date)")) {
        return true;
      }
      return false;
  }

  /**
    * @param bean
    *            bean对象
    * @return String
    */
  public static String bean2json(Object bean, List<String> del) {
      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 {
              if (null == del || !del.contains(props[i].getName())) {
                  String name = object2json(props[i].getName(), del);
                  System.err.println(bean + "===1>" + name);
                  String value = object2json(props[i].getReadMethod().invoke(bean), del);
                  System.err.println(bean + "===2>" + name);
                  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, List<String> del) {
      StringBuilder json = new StringBuilder();
      json.append("[");
      if (list != null && list.size() > 0) {
        for (Object obj : list) {
            json.append(object2json(obj, del));
            json.append(",");
        }
        json.setCharAt(json.length() - 1, ']');
      } else {
        json.append("]");
      }
      return json.toString();
  }

  /**
    * 将list转换为json数据
    * @param totalRecord 总记录数
    * @param list 数据list
    * @return
    */
  public static String list2json(Integer totalRecord,List list){
      Gson gjson=new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
      String aaData=gjson.toJson(list);
      String json = "{\"total\":"+totalRecord+",\"rows\":"+aaData+"}";
      return json;
  }

  /**
    * @param array
    *            对象数组
    * @return String
    */
  public static String array2json(Object[] array, List<String> del) {
      StringBuilder json = new StringBuilder();
      json.append("[");
      if (array != null && array.length > 0) {
        for (Object obj : array) {
            json.append(object2json(obj, del));
            json.append(",");
        }
        json.setCharAt(json.length() - 1, ']');
      } else {
        json.append("]");
      }
      return json.toString();
  }

  /**
    * @param map
    *            map对象
    * @return String
    */
  public static String map2json(Map<?, ?> map, List<String> del) {
      StringBuilder json = new StringBuilder();
      json.append("{");
      if (map != null && map.size() > 0) {
        for (Object key : map.keySet()) {
            json.append(object2json(key, del));
            json.append(":");
            json.append(object2json(map.get(key), del));
            json.append(",");
        }
        json.setCharAt(json.length() - 1, '}');
      } else {
        json.append("}");
      }
      System.err.println(json.toString());
      return json.toString();
  }

  /**
    * @param set
    *            集合对象
    * @return String
    */
  public static String set2json(Set<?> set, List<String> del) {
      StringBuilder json = new StringBuilder();
      json.append("[");
      if (set != null && set.size() > 0) {
        for (Object obj : set) {
            json.append(object2json(obj, del));
            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();
  }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值