【Util 通用代码】 JSON类 -- JSON对象处理

使用说明

JSON的作用和优势就不细说,在开发中使用其数据转换功能,譬如由前台传过来的json字符串转换成对象,由对象转换成json字符串等,目前json庞大的工具类已经为我们实现了这些功能。首先导入相关工具包:

        后台JAVA类中导入json-lib工具类:json-lib-2.4-jdk15.jar
        前台页面中导入:json2.js

源码

代码1,JSON处理类

import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

/**
 *  JSON数据处理工具类
 */
public class JSONUtil
{
    /**
     * 实体类型的对象
     */
    public static final int OBJECT_TYPE_BEAN = 1;

    /**
     * 集合类型对象
     */
    public static final int OBJECT_TYPE_LIST = 2;

    /**
     * 方法名称:writeJsonToResponse
     * 内容摘要:向客户端写入JSON字符串流
     * @param response  HTTP响应
     * @param object    待写入的对象
     * @param objType   待写入的对象类型
     * @return
     */
    public static boolean writeJsonToResponse(HttpServletResponse response, Object object, int objType)
    {
        boolean flag = true;

        if(object == null)
        {
            Debug.println("待写入的对象为空");
            return false;
        }

        response.setContentType("text/xml; charset=UTF-8");

        try
        {
            JSON json = null;

            if (objType == OBJECT_TYPE_BEAN)
            {
                json = JSONObject.fromObject(object);
            }
            else if (objType == OBJECT_TYPE_LIST)
            {
                json = JSONArray.fromObject(object);
            }
            else
            {
                Debug.println("待写入实体的对象类型不正确");
                return false;
            }

            String responseText = json.toString();
//            Debug.println(json.toString());
            response.getWriter().write(responseText);
        }
        catch (IOException e)
        {
            flag = false;
            e.printStackTrace();
        }
        return flag;
    }

    /**
     * 方法名称:parseJsonObjectToBean
     * 内容摘要:将一个JSON对象转换成指定类型的Bean
     * @param json  任意实体,包括Json格式字符串
     * @param clazz 需要转换的bean的Class
     * @return
     */
    public static Object parseJsonObjectToBean(Object json, Class clazz)
    {
        Object bean = null;
        try
        {
            JSONObject jsonObject = JSONObject.fromObject(json);

            bean = JSONObject.toBean(jsonObject, clazz);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        return bean;
    }

    /**
     * 方法名称:parseJsonArrayToBean
     * 内容摘要:将一个JSON对象转换成指定类型的Bean集合
     * @param json  任意实体,包括Json格式字符串
     * @param clazz 需要转换的bean的Class
     * @return
     */
    public static List parseJsonArrayToBean(Object json, Class clazz)
    {
        List list = new LinkedList();
        try
        {
            JSONArray jsonArray = JSONArray.fromObject(json);

            Object[] beans = jsonArray.toArray();

            Object bean = null;
            for(int i=0 ; i< beans.length; i++)
            {
                bean = parseJsonObjectToBean(beans[i], clazz);
                list.add(bean);
            }

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        return list;
    }

    /**
     * 方法名称:getJsonString
     * 内容摘要:将对象转换为JSON字符串
     * @param object
     * @param objType
     * @return
     */
    public static String getJsonString(Object object, int objType)
    {
        JSON json = null;
        try
        {
            json = null;

            if (objType == OBJECT_TYPE_BEAN)
            {
                json = JSONObject.fromObject(object);
            }
            else if (objType == OBJECT_TYPE_LIST)
            {
                json = JSONArray.fromObject(object);
            }
            else
            {
                return "待写入实体的对象类型不正确";
            }
        }
        catch (Exception e)
        {
            return "转换JSON字符串出错";
        }

        return json.toString();
    }

    public static void main(String[] args)
    {
        String json = "[]";
        Object obj = parseJsonArrayToBean(json, TaskBatchReportJSONData.class);
        System.out.print("");
    }

} 
   
此类的作用是封装了json-lib中的方法,实现了由json字符串生成对象或者由对象生成json字符串的功能,生成的字符串可以作为前台页面的数据展示,如jquery easyui 的列展示等。如:
JSONUtil.writeJsonToResponse(response, modelData, JSONUtil.OBJECT_TYPE_BEAN);


代码2  前台页面代码

前台页面需要导入 json2.js  javascript文件,主要使用的是其根据数组数据生成json格式字符串功能,当然如果你想自己拼接成json格式字符串格式也可以,但是遇到大的对象数据模型,其工作量是非常大的。

json2生成的JSON对象可以把数组对象组装成json格式字符串,如:
JSON.stringify(updatedRows)

其中updatedRows是js数组:
var updatedRows = new Array();

存储的数据时需要转换到后天的对象模型数据,如后天定义了个BO,有id和name属性,则在前台js代码中可以定义变量var model= {id:1,name:"叶落枫亭"}; 然后把数据push进入数组,如:updatedRows.push(params); 有多少个model就pash多少个,最后updatedRows数组中存储了页面生成的对象模型的数据列表,当然如果直接使JSON.stringify(model),生成json格式对象字符串。然后把生成的json字符串提交到后台处理。
后天处理代码:
        String json = request.getParameter("json");
        
        List list = JSONUtil.parseJsonArrayToBean(json,TaskReportForDayJSONData.class);
 
    

使用范围

JSON适合于使用ajax方式的富客户端页面,如使用Jquery form、easyui等插件的环境,再使用JSONUtil类对json格式的字符串进行对象转换,可以省去很多对象赋值的操作。


你可能感兴趣的:(通用代码)