Android数据加载及Json解析

方法调用

new ApiUser(this).initData(new ApiRequest() {(BeanRequest bean) {//如果接口调用不成功,给予提示if (!bean.isSuccess()) {UtilToast.show(Activitymain.this, bean.getErrInfo(), UtilToast.STYLE_ERROR);}//Json数据解析:BeanInitData 数据实体类BeanInitData data = (BeanInitData) ApiPublic.readJson((JSONObject) bean.getData(), BeanInitData.class);}});

接下来是方法过程: 1、创建实体类:

public class BeanInitData {employJobCount;enterpriseCount;//”:14,”private ArrayList<BeanAdv> ads;() {return jobApplicantCount;}(int jobApplicantCount) {this.jobApplicantCount = jobApplicantCount;}() {return employJobCount;}(int employJobCount) {this.employJobCount = employJobCount;}() {return enterpriseCount;}(int enterpriseCount) {this.enterpriseCount = enterpriseCount;}public ArrayList<BeanAdv> getAds() {return ads;}(ArrayList<BeanAdv> ads) {this.ads = ads;}}

2、所有接口调用统一写在一起,

public class ApiUser {private Context ctx;public ApiUser(Context ctx) {this.ctx = ctx;}(ApiRequest request) {// ApiPublic.SERERIP为接口urlString url = ApiPublic.SERERIP + “initData.json”;HttpParam param = new HttpParam();ApiPublic.startHttpPost(ctx, url, param, request);}(String account,String password,String loginFrom,ApiRequest request) {String url = ApiPublic.SERERIP + “login.html”;HttpParam param = new HttpParam();param.addParams(“account”, account);param.addParams(“password”, password);param.addParams(“loginFrom”, loginFrom);ApiPublic.startHttpPost(ctx, url, param, request);}}

3、ApiPublic包含分页,不分页Json解析

public class ApiPublic {

public final static String SERERIP = “http://write.blog.csdn.net/mdeditor/api/”;/** * 开始调用接口:POST方式 * @param url * @param param * @param request */public static void startHttpPost(Context ctx, String url, HttpParam param, ApiRequest request) {HttpRequest http = new HttpRequest(url, param, 0, request);http.execute();}public static void startHttpPost(String url, HttpParam param, ApiRequest request) {HttpRequest http = new HttpRequest(url, param, 0, request);http.execute();}/** * 开始调用接口:POST方式,传输文件 * @param url * @param param * @param request */public static void startHttpPostFile(Context ctx, String url, HttpParam param, ApiRequest request) {HttpRequest http = new HttpRequest(url, param, 1, request);http.execute();}public static void startHttpPostFile(String url, HttpParam param, ApiRequest request) {HttpRequest http = new HttpRequest(url, param, 1, request);http.execute();}/** * 取消接口调用 */public static void httpTaskCancel() {HttpRequest http = new HttpRequest();http.onCancelled();}/** * 通用的JSON解析 * * @param result 传入JSON字符串 * @return String 成功返回为””,失败返回错误描述 */public static BeanRequest readJsonUtil(String result) {if (TextUtils.isEmpty(result)) {return new BeanRequest().setError(“无响应数据”);}try {JSONObject jsonObject = new JSONObject(result);if (jsonObject.isNull(“status”)) {return new BeanRequest().setError(“受理失败”);}// 0成功、1错误、2异常int Status = jsonObject.getInt(“status”);if (Status != 0) {String description = jsonObject.getString(“desc”);return new BeanRequest().setError(description);}BeanRequest bean = new BeanRequest();bean.setSuccess(true);bean.setResult(result);bean.setData(jsonObject.isNull(“data”) ? null : jsonObject.get(“data”));return bean;} catch (JSONException e) {e.printStackTrace();return new BeanRequest().setError(“数据异常”);}}/** * 解析JSON对象,不含分页 * * @param result json数据 * @param entityClass 实体类 * @return */public static <T> Object readJson(final JSONObject result, Class<T> entityClass) {if (null == result)return null;return new Gson().fromJson(result.toString(), entityClass);}/** * 解析JSON数组,,含分页 * 数据示例:{“total”:xx,”rows”:[]} * @param result json数据 * @param entityClass 实体类 * @return */public static <T> List readJsonListPage(final JSONObject result, BeanPage page, Class<T> entityClass) {if (null == result)return null;try {int total = result.getInt(“total”);page.setTotal(total);JSONArray array = result.getJSONArray(“rows”);List<T> list = new ArrayList<T>();Gson gson = new Gson();int size = array.length();for (int i = 0; i < size; i++) {list.add(gson.fromJson(array.getString(i), entityClass));}return list;} catch (JSONException e) {return null;}}/** * 解析JSON数组,不含分页 * * @param result json数据 * @param entityClass 实体类 * @return */public static <T> List readJsonList(final JSONArray result, Class<T> entityClass) {if (null == result)return null;List<T> list = new ArrayList<T>();Gson gson = new Gson();try {int size = result.length();for (int i = 0; i < size; i++) {list.add(gson.fromJson(result.getString(i), entityClass));}} catch (JSONException e) {}return list;}/** * 组成一个简单的json * @param id * @param name * @return */public static JSONObject writeJsonSimple(int id, String name) {JSONObject json = new JSONObject();try {json.put(“id”, id);json.put(“name”, name);} catch (JSONException e) {e.printStackTrace();}return json;}public static JSONObject writeJson(int extendId, String tagValue,String tagText) {JSONObject json = new JSONObject();try {json.put(“extendId”, extendId);json.put(“tagValue”, tagValue);json.put(“tagText”, tagText);} catch (JSONException e) {e.printStackTrace();}return json;

}

获得幸福的二法门是珍惜你所拥有的、遗忘你所没有的

Android数据加载及Json解析

相关文章:

你感兴趣的文章:

标签云: