通过gson json-javaben比较方便的方法
2014-03-22 00:00
405 查看
摘要: 我自己觉得还不错,太不想每次都要去解析json字符串了 本来gson都可以的 但是还是觉得每次都要去写 new TypeToken<A<B>>(){}.getType(); 这样的代码太蛋疼了。 一个网络接口返回的数据都要单独去这样重复写
一个json字符串的javaben 包含基本数据 因为我这边的服务器数据可能根本不包含message字段 只有状态 成功与否
什么都没做 因为要继承2个子类
一个子类处理 message是字段 一个处理是jsonarray的
一个最基本的回调
空的RequestListener 以后所有请求都要它来进行的。
我还派生一个RequestListener 的子类 SongSquareDataCallBack 实现一些请求生命周期的回调 比如线程启动 结束 字段映射 增加自定义Gson类型转换器等
简单封装了网络请求
OK 在Activity 请求数据 以后只需要根据json字符串生成javaben 然后通过统一的方式回调就好了。
/** * 通用json字符串格式 * { "status": 1, "msg": "成功", "message":"****" } * @author xiangjinpan * */ public class McBean implements Constant { //状态 @Expose @SerializedName(STATUS) private int status; //消息 @Expose @SerializedName(MSG) private String msg; }
一个json字符串的javaben 包含基本数据 因为我这边的服务器数据可能根本不包含message字段 只有状态 成功与否
/** * 所有数据类的抽象类 boolean 等类型 使用包装类Boolean * @author xiangjinpan * * @param <T> */ public abstract class Data<T> extends McBean { }
什么都没做 因为要继承2个子类
/** * * 目前只能处理绝对返回是jsonarray的 * @author xiangjinpan * * @param <T> */ public class PluralData<T> extends Data<T> { @Expose private List<T> value; @SerializedName(COUNT) private int count; }
/** * 只针对服务器返回的 value 不是一个jsonarray的情况 * * 默认解析所有字段 * @author xiangjinpan * * @param <T> */ public class SingularData<T> extends Data<T> { @Expose @SerializedName(VALUE) private T value; }
一个子类处理 message是字段 一个处理是jsonarray的
public interface BaseListener_<T> { public void onSuccess(T object); public void onFailed(int errno); public void onException(String str); }
一个最基本的回调
/** * 基本回调 * @author xiangjinpan * @param <T> */ public abstract class RequestListener<T extends Data<?>> extends TypeToken<T> implements BaseListener_<T>,Constant { }
空的RequestListener 以后所有请求都要它来进行的。
我还派生一个RequestListener 的子类 SongSquareDataCallBack 实现一些请求生命周期的回调 比如线程启动 结束 字段映射 增加自定义Gson类型转换器等
public class SongSquareData extends BaseData { public SongSquareData(Context context) { super(context); } /** * 获取广场数据 * @param start * @param length * @param listener */ public <T extends Data<?>> void getSquare(int start, int length, SongSquareDataCallBack<T> listener) { ArrayList<KeyValue<String, Object>> parametList = new ArrayList<KeyValue<String, Object>>(); parametList.add(new KeyValue<String, Object>("start", start)); parametList.add(new KeyValue<String, Object>("length", length)); startRequestThread(NetUrlConstant.SONG_SQUARE, parametList, listener); } public <T extends Data<?>> void getSquareList(int id, SongSquareDataCallBack<T> listener) { ArrayList<KeyValue<String, Object>> parametList = new ArrayList<KeyValue<String, Object>>(); parametList.add(new KeyValue<String, Object>("id", id)); startRequestThread(NetUrlConstant.SONG_SQUARE_LIST, parametList, listener); } }
简单封装了网络请求
mData.getSquareList(1, new SongSquareDataCallBack<PluralData<SongListBean>>(){ @Override public void onFailed(int errno) { super.onFailed(errno); } @Override public void onException(String str) { super.onException(str); } @Override public void onSuccess(PluralData<SongListBean> object) { super.onSuccess(object); } });
OK 在Activity 请求数据 以后只需要根据json字符串生成javaben 然后通过统一的方式回调就好了。
相关文章推荐
- java.lang.NoClassDefFoundError: com.google.gson.stream.JsonReader 类似的在eclipse通过bulidpath导入包发生异常
- Java 下的 JSON库性能比较:JSON.simple vs. GSON vs. Jackson vs. JSONP
- 将Java的List结构通过GSON库转换为JSON的方法示例
- java调用webservice,比较简单方便的方法。
- Java 下的 JSON库性能比较:JSON.simple vs. GSON vs. Jackson
- Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
- Java下json的解析方法-----GSON与JSONObject
- Java下json的解析方法-----GSON与JSONObject
- Java 下的 JSON库性能比较:JSON.simple vs. GSON vs. Jackson vs. JSONP
- Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
- Gson: 比较两个json是否等价(比较java bean是否相等的通用方法)
- json对象和java对象的相互转换方法(json-lib、jackson、fastjson、gson)
- Java下json的解析方法-----GSON与JSONObject
- Java 下的 JSON库性能比较:JSON.simple vs. GSON vs. Jackson vs. JSONP
- Java的JSON转换库GSON的基本使用方法示例
- java 通过发送json,post请求,返回json数据的方法
- Json学习总结(2)——Java 下的 JSON库性能比较:JSON.simple vs. GSON vs. Jackson vs. JSONP
- Java下json的解析方法-----GSON与JSONObject
- Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
- Json学习总结(2)——Java 下的 JSON库性能比较:JSON.simple vs. GSON vs. Jackson vs. JSONP