package com.letv.http.parse; import java.lang.reflect.Modifier; import org.json.JSONException; import org.json.JSONObject; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.letv.http.bean.LetvBaseBean; public class LetvGsonParser<T extends LetvBaseBean> extends LetvBaseParser<T, String>{ /** * 接口信息节点 * */ protected final String HEADER = "header" ; /** * 接口返回状态:1-正常,2-无数据,3-服务异常 * */ protected final String STATUS = "status" ; /** * 接口时间轴 * */ protected final String MARKID = "markid" ; /** * 接口返回数据节点 * */ protected final String BODY = "body" ; public interface STATE{ public int NORMAL = 1; public int NODATA = 2; public int EXCEPTION = 3; public int NOUPDATE = 4; } /** * 借口状态 * */ private int status ; /** * 接口时间轴 * */ private String markid ; static GsonBuilder sBuilder; static Gson sGson; static { sBuilder = new GsonBuilder(); sBuilder.excludeFieldsWithModifiers(Modifier.STATIC, Modifier.VOLATILE, Modifier.PRIVATE); sGson = sBuilder.create(); } private Class<T> cls; public LetvGsonParser(int from,Class<T> cls) { super(from); this.cls = cls; } @Override public T parse(String data) throws Exception { T t; try { t = sGson.fromJson(data, cls); } catch (Exception e) { throw e; } return t; } @Override protected boolean canParse(String data) { // try { // JSONObject object = new JSONObject(data); // if(!object.has(HEADER)) { // return false ; // } // JSONObject headJson = object.getJSONObject(HEADER); // status = headJson.getInt(STATUS); // // if(status == STATE.NORMAL){ // if(headJson.has(MARKID)){ // markid = headJson.getString(MARKID); // } // return true ; // } // // if(status == STATE.NOUPDATE){ // return true ; // } // } catch (JSONException e) { // e.printStackTrace(); // } // return false; //不对Header信息做判断,直接解析出来 by lhz return true; } @Override protected String getData(String data) throws Exception { return data; } }