org.xutils.http.loader.JSONObjectLoader&JSONArrayLoader

org.xutils.http.loader.JSONObjectLoader&JSONArrayLoader

package org.xutils.http.loader;



import android.text.TextUtils;



import org.json.JSONObject;

import org.xutils.cache.DiskCacheEntity;

import org.xutils.common.util.IOUtil;

import org.xutils.http.RequestParams;

import org.xutils.http.request.UriRequest;



import java.io.InputStream;



/**

* @author 注释者:王教成

* @version 注释版:1.0.0

* 对象加载器(JSON)

*/

/*package*/ class JSONObjectLoader extends Loader<JSONObject> {

private String charset = "UTF-8";//创建UTF-8字符集字符串

   private String resultStr = null;//声明结果字符串



   /**

    * 创建新实例

    * @return 返回JSON对象加载器

    */

   @Override

   public Loader<JSONObject> newInstance() {

return new JSONObjectLoader();

   }



/**

    * 设置请求参数

    * @param params 请求参数

    */

   @Override

   public void setParams(final RequestParams params) {

if (params != null) {

String charset = params.getCharset();//如果请求参数非空,从请求参数获取字符集

           if (!TextUtils.isEmpty(charset)) {

this.charset = charset;//如果字符集非空则赋值

           }

}

}



/**

    * 加载输入流

    * @param in 输入流

    * @return 返回JSON对象

    * @throws Throwable 抛出异常

    */

   @Override

   public JSONObject load(final InputStream in) throws Throwable {

resultStr = IOUtil.readStr(in, charset);//从输入流读取字符串

       return new JSONObject(resultStr);//创建JSON对象

   }

/**

    * 加载Uri请求参数

    * @param request Uri请求参数

    * @return 返回JSON对象

    * @throws Throwable 抛出异常

    */

   @Override

   public JSONObject load(final UriRequest request) throws Throwable {

request.sendRequest();//发送请求

       return this.load(request.getInputStream());//通过Uri请求参数获取输入流,调用本类加载输入流方法

   }

/**

    * 加载,从磁盘缓存实体

    * @param cacheEntity 磁盘缓存实体

    * @return 返回JSON对象或null

    * @throws Throwable 抛出异常

    */

   @Override

   public JSONObject loadFromCache(final DiskCacheEntity cacheEntity) throws Throwable {

if (cacheEntity != null) {

String text = cacheEntity.getTextContent();//如果磁盘缓存实体非空,获取文本内容

           if (!TextUtils.isEmpty(text)) {

return new JSONObject(text);//如果文本内容非空,创建JSON对象

           }

}

return null;//如果磁盘缓存实体为空,返回null

   }



/**

    * 保存到缓存实体

    * @param request Uri请求参数

    */

   @Override

   public void save2Cache(UriRequest request) {

saveStringCache(request, resultStr);//保存字符串缓存

   }

}

package org.xutils.http.loader;



import android.text.TextUtils;



import org.json.JSONArray;

import org.xutils.cache.DiskCacheEntity;

import org.xutils.common.util.IOUtil;

import org.xutils.http.RequestParams;

import org.xutils.http.request.UriRequest;



import java.io.InputStream;



/**

* @author 注释者:王教成

* @version 注释版:1.0.0

* 数组加载器(JSON)

*/

/*package*/ class JSONArrayLoader extends Loader<JSONArray> {

private String charset = "UTF-8";//创建UTF-8字符集字符串

   private String resultStr = null;//声明结果字符串



   /**

    * 创建新实例

    * @return 返回JSON数组加载器

    */

   @Override

   public Loader<JSONArray> newInstance() {

return new JSONArrayLoader();

   }



/**

    * 设置请求参数

    * @param params 请求参数

    */

   @Override

   public void setParams(final RequestParams params) {

if (params != null) {

String charset = params.getCharset();//如果请求参数非空,从请求参数获取字符集

           if (!TextUtils.isEmpty(charset)) {

this.charset = charset;//如果字符集非空则赋值

           }

}

}



/**

    * 加载输入流

    * @param in 输入流

    * @return 返回JSON数组

    * @throws Throwable 抛出异常

    */

   @Override

   public JSONArray load(final InputStream in) throws Throwable {

resultStr = IOUtil.readStr(in, charset);//从输入流读取字符串

       return new JSONArray(resultStr);//创建JSON对象

   }



/**

    * 加载Uri请求参数

    * @param request Uri请求参数

    * @return 返回JSON数组

    * @throws Throwable 抛出异常

    */

   @Override

   public JSONArray load(final UriRequest request) throws Throwable {

request.sendRequest();//发送请求

       return this.load(request.getInputStream());//通过Uri请求参数获取输入流,调用本类加载输入流方法

   }

/**

    * 加载,从磁盘缓存实体

    * @param cacheEntity 磁盘缓存实体

    * @return 返回JSON数组或null

    * @throws Throwable 抛出异常

    */

   @Override

   public JSONArray loadFromCache(final DiskCacheEntity cacheEntity) throws Throwable {

if (cacheEntity != null) {

String text = cacheEntity.getTextContent();//如果磁盘缓存实体非空,获取文本内容

           if (!TextUtils.isEmpty(text)) {

return new JSONArray(text);//如果文本内容非空,创建JSON数组

           }

}

return null;//如果磁盘缓存实体为空,返回null

   }

/**

    * 保存到缓存实体

    * @param request Uri请求参数

    */

   @Override

   public void save2Cache(UriRequest request) {

saveStringCache(request, resultStr);//保存字符串缓存

   }

}

org.xutils.http.loader.JSONObjectLoader&JSONArrayLoader