JSON数据处理

json这种数据格式的好处就不多说了、直接来点代码、供研究下:

    /**
     * @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 Date) {
            (new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")).format(obj);
            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 list
     *            list对象
     * @return String
     */
    public static String list2json(List<?> list) {
        StringBuilder json = new StringBuilder();
        json.append("{ 'results': " + list.size() + ", 'rows': ");
        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("]");
        }
        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();
    }




    /**
     * 从一个JSON 对象字符格式中得到一个java对象
     *
     * @param jsonString
     * @param pojoCalss
     * @return
     */

    public static Object getObject4JsonString(String jsonString, Class pojoCalss) {
        Object pojo;
        JSONObject jsonObject = JSONObject.fromObject(jsonString);
        pojo = JSONObject.toBean(jsonObject, pojoCalss);
        return pojo;
    }

    /**
     * 从json hash表达式中获取一个map,改map支持嵌套功能
     *
     * @param jsonString
     * @return
     */
    public static Map getMap4Json(String jsonString) {
        JSONObject jsonObject = JSONObject.fromObject(jsonString);
        Iterator keyIter = jsonObject.keys();
        String key;
        Object value;
        Map valueMap = new HashMap();
        while (keyIter.hasNext()) {
            key = (String) keyIter.next();
            value = jsonObject.get(key);
            valueMap.put(key, value);
        }
        return valueMap;
    }

    /**
     * 从json数组中得到相应java数组
     *
     * @param jsonString
     * @return
     */
    public static Object[] getObjectArray4Json(String jsonString) {
        JSONArray jsonArray = JSONArray.fromObject(jsonString);
        return jsonArray.toArray();

    }

    /**
     * 从json对象集合表达式中得到一个java对象列表
     *
     * @param jsonString
     * @param pojoClass
     * @return
     */
    public static List getList4Json(String jsonString, Class pojoClass) {
        JSONArray jsonArray = JSONArray.fromObject(jsonString);
        JSONObject jsonObject;
        Object pojoValue;
        List list = new ArrayList();
        for (int i = 0; i < jsonArray.size(); i++) {
            jsonObject = jsonArray.getJSONObject(i);
            pojoValue = JSONObject.toBean(jsonObject, pojoClass);
            list.add(pojoValue);

        }
        return list;

    }

    /**
     * 从json数组中解析出java字符串数组
     *
     * @param jsonString
     * @return
     */
    public static String[] getStringArray4Json(String jsonString) {
        JSONArray jsonArray = JSONArray.fromObject(jsonString);
        String[] stringArray = new String[jsonArray.size()];
        for (int i = 0; i < jsonArray.size(); i++) {
            stringArray[i] = jsonArray.getString(i);

        }

        return stringArray;
    }

    /**
     * 从json数组中解析出java Long型对象数组
     *
     * @param jsonString
     * @return
     */
    public static Long[] getLongArray4Json(String jsonString) {
        JSONArray jsonArray = JSONArray.fromObject(jsonString);
        Long[] longArray = new Long[jsonArray.size()];
        for (int i = 0; i < jsonArray.size(); i++) {
            longArray[i] = jsonArray.getLong(i);
        }
        return longArray;
    }

    /**
     * 从json数组中解析出java Integer型对象数组
     *
     * @param jsonString
     * @return
     */
    public static Integer[] getIntegerArray4Json(String jsonString) {
        JSONArray jsonArray = JSONArray.fromObject(jsonString);
        Integer[] integerArray = new Integer[jsonArray.size()];
        for (int i = 0; i < jsonArray.size(); i++) {
            integerArray[i] = jsonArray.getInt(i);
        }
        return integerArray;
    }

    /**
     * 从json数组中解析出java Date 型对象数组,使用本方法必须保证
     *
     * @param jsonString
     * @return
     */
    public static Date[] getDateArray4Json(String jsonString, String DataFormat) {
        JSONArray jsonArray = JSONArray.fromObject(jsonString);
        Date[] dateArray = new Date[jsonArray.size()];
        String dateString;
        Date date;
        for (int i = 0; i < jsonArray.size(); i++) {
            dateString = jsonArray.getString(i);
            date = stringToDate(dateString, DataFormat);
            dateArray[i] = date;

        }
        return dateArray;
    }

    /**
     * 从json数组中解析出java Integer型对象数组
     *
     * @param jsonString
     * @return
     */
    public static Double[] getDoubleArray4Json(String jsonString) {

        JSONArray jsonArray = JSONArray.fromObject(jsonString);
        Double[] doubleArray = new Double[jsonArray.size()];
        for (int i = 0; i < jsonArray.size(); i++) {
            doubleArray[i] = jsonArray.getDouble(i);
        }
        return doubleArray;
    }

    /**
     * 将java对象转换成json字符串
     *
     * @param javaObj
     * @return
     */
    public static String getJsonString4JavaPOJO(Object javaObj) {
        JSONObject json;
        json = JSONObject.fromObject(javaObj);
        return json.toString();

    }


    /**
     *  将String转换成date类型.
     * @param dateString
     * @param dataFormat
     * @return
     */
    public static Date stringToDate(String dateString, String dataFormat) {
        DateFormat format = new SimpleDateFormat(dataFormat);
        Date date = null;
        try {
            date = format.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
    
    


      /**
       * @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 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();
      }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO 自动生成方法存根
        JSONObject jsonObject = new JSONObject();  
        jsonObject.put("username","demos");  
        jsonObject.put("sex", "男");  
        jsonObject.put("qq", "758574943");  
        jsonObject.put("Min.score", new Integer(99));  
        jsonObject.put("nickname", "梦密码");    
        //输出jsonobject对象  
        System.out.println("jsonObject==>"+jsonObject);  
        
        
        //判读输出对象的类型  
        boolean isArray = jsonObject.isArray();  
        boolean isEmpty = jsonObject.isEmpty();  
        boolean isNullObject = jsonObject.isNullObject();  
        System.out.println("isArray:"+isArray+" isEmpty:"+isEmpty+" isNullObject:"+isNullObject);  
          
        //添加属性  
        jsonObject.element("address", "北京市");  
        System.out.println("添加属性后的对象==>"+jsonObject);  
          
        //返回一个JSONArray对象  
        JSONArray jsonArray = new JSONArray();  
        jsonArray.add(0, "this is a jsonArray value");  
        jsonArray.add(1,"another jsonArray value");  
        jsonObject.element("jsonArray", jsonArray);  
        JSONArray array = jsonObject.getJSONArray("jsonArray");  
        System.out.println("返回一个JSONArray对象:"+array);  
        //添加JSONArray后的值  
//        {"username":"huangwuyi","sex":"男","QQ":"413425430","Min.score":99,"nickname":"梦中心境","address":"福建省厦门市","jsonArray":["this is a jsonArray value","another jsonArray value"]}
        System.out.println("结果="+jsonObject);  
          
        //根据key返回一个字符串  
        String username = jsonObject.getString("username");  
        System.out.println("username==>"+username);
       
        //把字符转换为 JSONObject
        String temp=jsonObject.toString();
        JSONObject object = JSONObject.fromObject(temp);
        //转换后根据Key返回值
        System.out.println("qq="+object.get("QQ"));
       
        
    }

需要的包可以在:http://www.oschina.net/code/snippet_931591_17607下载或者是:http://download.youkuaiyun.com/detail/supingemail/5517039 下载

在使用返回bean对象的时候,一定要将字段的对应关系对应好、否则得到的数据是不全的、其中包括:大小写、类型等等




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值