gson解析

最近在系统复习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")

  }

就是这么简单

你可能感兴趣的:(gson解析)