Android Json转对象本地快速测试

2019-03-20  本文已影响0人  hai_phon

应用场景:

后台提供了服务接口,并有json数据demo,但是可能功能还没实现,这时候Android已经完成了功能,就等测试接口时可以用这个方法进行本地快速测试。 

例如给出了这样的json数据:

// json数据
{
  "list": [
    {
      "year": "string",
      "month": "string",
      "orders": 0,
      "total_sales": "string",
      "collected": "string",
      "rate": "string",
      "increase": 0
    }
  ]
}
1.拷贝这段json数据,通过GsonFormat插件生成Bean,不懂的看这里GsonFormat使用
2.将Json字符串保存到格式为.json的文本中,文件名可以任意取,建议和数据Bean的名字保持一致,重点是下面调用的时候用这个名字就可以,保存到asset文件夹,没有这个文件夹的手动新建。
image.png
3.将Json转Bean对象,调用下面方法。
private void getTestBannerData() {
        String json = JsonUtil.getAsstesJson(mContext, "banner.json");
        BannerBean banner = JsonUtil.fromJson(json, BannerBean.class);
        initBanner(banner);
    }

JsonUtil.java

package com.dasudian.dsd.utils.string;

import android.content.Context;
import android.content.res.AssetManager;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Type;

import com.google.gson.Gson;
/**
 * JsonUtil工具类代码:
 * 注意先再build配置implementation 'com.google.code.gson:gson:2.8.5'
 */
public class JsonUtil {

    private JsonUtil(){}

    /**
     * 对象转换成json字符串
     * @param obj 
     * @return 
     */
    public static String toJson(Object obj){
        
        Gson gson = new Gson();
        
        return gson.toJson(obj);
    }
    
    /**
     * json字符串转成对象
     * @param str  
     * @param type
     * @return 
     */
    public static <T> T fromJson(String str, Type type) {
        Gson gson = new Gson();
        return gson.fromJson(str, type);
    }

    /**
     * json字符串转成对象
     * @param str  
     * @param type 
     * @return 
     */
    public static <T> T fromJson(String str, Class<T> type) {
        Gson gson = new Gson();
        return gson.fromJson(str, type);
    }

    /**
     * 得到json文件中的内容
     * @param context
     * @param fileName
     * @return
     */
    public static String getAsstesJson(Context context, String fileName){
        StringBuilder stringBuilder = new StringBuilder();
        //获得assets资源管理器
        AssetManager assetManager = context.getAssets();
        //使用IO流读取json文件内容
        try {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(
                    assetManager.open(fileName),"utf-8"));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                stringBuilder.append(line.trim());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return stringBuilder.toString();
    }
}

依赖Gson库

  dependencies {
      ...
      implementation 'com.google.code.gson:gson:2.8.5'
      ...
  }
上一篇下一篇

猜你喜欢

热点阅读