最近在系统复习web自动化。。然后带过了api自动化
api的返回结果,肯定会用到json啦
解析json就势在必行了
刚开始我的思路是自己解析json,然后发现我能输出各个级别的key:value,但是我返回不了,用到了递归。问了公司的大神,他说:哎,大学的时候我才自己这样解析,现在已经不用了。用gson吧,非常简单。
Σ( ° △ °|||)︴汗颜了
然后拿到了gson解析json的方法,果然很简单啊
下面是gson处理各种json格式的方法。单独保存一个类,等待被调用_
public class GsonUtil {
/**
* @param @param retJson
* @param @param clz
* @param @return
* @return T
* @throws
* @Method: getObjectFromGson
* @Description: 单一对象 */
public staticT getObjectFromGson(String retJson, Classclz) {
T obj = null;
Gson gson = new Gson();
try {
if (!TextUtils.isEmpty(retJson)) {
obj = (T) gson.fromJson(retJson, clz);
}
} catch (Exception e) {
System.out.println(e);
if (LogLevel.DEV){
DevLog.e("e : " + e.getMessage());
}
}
return obj;
}
/**
* @param @param retJson
* @param @param clz
* @param @return
* @return T
* @throws
* @Method: getObjectFromGson
* @Description: 列表对象 */
public staticListgetListFromGson(String retJson, Type type) {
Listlist = new ArrayList();Gson gson = new Gson();
try {
if (!TextUtils.isEmpty(retJson)) {
list = gson.fromJson(retJson, type);
}
}
catch (Exception e) {
e.printStackTrace();
}
return list;
}
public static String parseFromObject(Object locateBeans) {
Gson gson = new Gson();
return gson.toJson(locateBeans);
}
@SuppressWarnings("unchecked")
public staticListgetListFromGS(String jarray, Type type) {
Listlist = new ArrayList();
try {
JSONArray jsArray = new JSONArray(jarray);
for (int temp = 0; temp < jsArray.length(); temp++) {
Gson gson = new Gson();
list.add((T) gson.fromJson(jsArray.getString(temp), type));
}
} catch (JSONException e) {
e.printStackTrace();
}
return list;
}
}
再写一个json样式的类作为模版。。各个样式一定都要声明是public类型,不然调用不到。java默认是default,不是public。。我傻了,一直以为是public,结果点不出来,以为是哪里出问题了,果然是出问题了,因为不是public呀
public classModel{
publicRatingrating;
public classRating {
public intmax;
public intnumRateer;
public floataverage;
}
}
写一个调用gson方法的类
public staticModelgetGson(String jsonStr) {
Model model = GsonUtils.getObjectFromGson(jsonStr,Model.class);
returnmodel;
}
就可以测试了
@Test
public voidtestGson(){
String url ="https://api.douban.com/v2/book/26892411";
Response response = ApiRestUtils.getRest(url);
String json=response.asString();
JsonOperator.Model model= (JsonOperator.Model)JsonOperator.getGson(json);
Integer max=model.rating.max;
Assert.assertEquals(max.toString(),"10")
}
就是这么简单