Java系统中JSON的封装

来源:互联网 发布:mac怎么输入货币符号 编辑:程序博客网 时间:2024/06/06 03:00

封装和解析JSON公共类

需要的JAR包

封装的公共类

package com.cloud.Util;

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

/**

 * 处理JSON数据的工具类,把JSON数据和Java对象之间相互转换

 */

publicclass JsonUtil {

   /**

    * JSONHASH表达式中获取map

    * @param jsonString

    * @return Map

    */

   @SuppressWarnings({"rawtypes", "unchecked" })

   publicstatic Map getMapFromJson(String jsonString){

      if(jsonString==null || jsonString ==""){

        returnnew HashMap();

      }

      JSONObject jsonObject = JSONObject.fromObject(jsonString);

      Iterator keyIte = jsonObject.keys();

      String key ;

      Object value;

      Map valueMap = new HashMap();

      while(keyIte.hasNext()){

        key = (String) keyIte.next();

        value = jsonObject.get(key);

        valueMap.put(key, value);

      }

      return valueMap;

   }

   /**

    * JSON数组转换为相应的Java数组

    * @param jsonString

    * @return jsonArray

    */

   publicstatic Object[] getArrayFromJson(String jsonString){

       JSONArray jsonArray = JSONArray.fromObject(jsonString);

       return jsonArray.toArray();

   }

   /**

    * JSON对象集合表达式中得到一个Java对象列表

    * @param jsonString

    * @param pojo

    * @return List

    */

   @SuppressWarnings({"rawtypes", "unchecked" })

   publicstatic List getListFromJson(String jsonString,Class pojo){

      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, pojo);

        list.add(pojoValue);

      }

      return list;

   }

   /**

    * 解析JSONArray,获取Java字符串数组

    * @param jsonString

    * @return String[]

    */

   publicstatic String[] getStringArrayFromJson(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;

   }

   /**

    * 解析JSONArray,获取JavaLong类型数组

    * @param jsonString

    * @return Long[]

    */

   publicstatic Long[] getLongArrayFromJson(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;

   }

   /**

    * 解析JSONArray,获取JavaInteger类型数组

    * @param jsonString

    * @return Integer[]

    */

   publicstatic Integer[] getIntegerArrayFromJson(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;

   }

   /**

    * 解析JSONArray,获取JavaDate类型数组

    * @param jsonString

    * @param DateFormat

    * @return Date[]

    * @throws ParseException

    */

   publicstatic Date[] getDateArrayFromArray(String jsonString,String DateFormat){

      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 = JsonUtil.parseDate(dateString, DateFormat);

        dateArray[i] = date;

      }

      return dateArray;

   }

   /**

    * 处理Java中的时间日期格式

    * @param dateStr

    * @param format

    * @return Date

    */

   publicstatic Date parseDate(String dateStr, String format) {

      Date date = null;

      try {

        DateFormat df = new SimpleDateFormat(format);

        String dt = (dateStr).replaceAll("-","/");

        if ((!dt.equals("")) && (dt.length() < format.length())) {

           dt += format.substring(dt.length()).replaceAll("[YyMmDdHhSs]",

                 "0");

        }

        date = (Date) df.parse(dt);

      } catch (Exception e) {

      }

      return date;

   }

   /**

    * 解析JSONArray数组,获取JavaDouble类型数组

    * @param jsonString

    * @return Double[]

    */

   publicstatic Double[] getDoubleArrayFromJson(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 pojo

    * @return String

    */

   publicstatic String getJsonStringFromJavaPojo(Object pojo){

      JSONObject json = JSONObject.fromObject(pojo);

      return json.toString();

   }

}

测试方法

package com.cloud.Test;

import java.util.Map;

import com.cloud.Util.JsonUtil;

publicclass Test1 {

   @SuppressWarnings("rawtypes")

   publicstatic void main(String[] args) {

      Map map = JsonUtil.getMapFromJson("{'name':'Bill Gates','age':'22','company':'科技公司'}");

      //{name=Bill Gates, age=22, company=科技公司}

      System.out.println(map);

     

      Object obj[] = JsonUtil.getArrayFromJson("['Value0','Value1','Value2','Value3']");

      for(int i=0;i<obj.length;i++){

        System.out.print(obj[i]+";");

      }

   }

}

1 0