Gson

Gson相比android源生解析json数据的优势:

Gson使用方便,解析复杂数据简单(这里建议配合JsonFormat使用),是一种流行的解析json数据的方式。

解析步骤(类同于Android源生Json方式,Gson解析json数据也分为三步)

①.获取json数据(可以通过网络,可以通过本地)

②.解析json数据

1.导入依赖,加入Gson的包

dependencies {
    implementation 'com.google.code.gson:gson:2.8.5'
}

2.设置Bean对象来接收对应的json数据

可以使用JsonFormat工具,首先得到在setting里下载JsonFormat工具,之后导入一段样例的json数据。jsonformat会帮助你自动生成对应的Bean对象

alt+insert

android json提取数据处理 android gson解析json_android

复制json数据

android json提取数据处理 android gson解析json_json_02

自动生成

android json提取数据处理 android gson解析json_android_03

android json提取数据处理 android gson解析json_android_04

3.使用Gson自带的方法fromjson方法解析数据

*首先new一个Gson对象

Gson gson = new Gson();

fromjson方法有两个参数

第一个参数 需要解析的json对象

第二个参数 json的数据类型,这里通过TypeToken来实现(最基本的要分清传入的json数据是数组(jsonArray)还是(jsonObject),如果是jsonArray对象,那么需要List<bean>对象来接收,例如new TypeToken<List<WeatherBean>> 如果是jsonObject对象这里就只需要用如下方法)

Type type = new TypeToken<WeatherBean>(){}.getType();
weather = gson.fromJson(json,type);

③.显示json数据

得到解析完毕的weather即可直接调用或者使用方法调用其成员变量,即解析好的数据。

注:

规范写法或者需多次使用Gson时,可以把Gson解析的方法以及新建分装到一个类中使用时进行调用即可(JsonUtil类)-------- 单例模型

单例模型 ---- 简单概念:因为每次使用的方法和组件都是同样的,如果调用多次就显得代码较为冗余,比较麻烦。这里先把他封装成一个类,多次调用的使用不使用new方法 而定义一个 setatic 的 getInstance方法 在该方法里面判定其是否以及被定义,如果没被定义则会新建该对象类反之不会新建

这种方法极大的减少了代码量和代码的冗余程度,也优化了代码的可阅读性。

例如:

public class JsonUtil {
    private static JsonUtil instance;

    public JsonUtil() {
    }

    //创建对象,定义instance方法(单例模型判断)
    public static JsonUtil getInstance(){
        if (instance == null){
            instance = new JsonUtil();
        }
        return instance;
    }

    //设置解析方法
    public WeatherBean getWeatherFromJson(Context context , String json){
        WeatherBean weather = new WeatherBean();
        Gson gson = new Gson();
        Type type = new TypeToken<WeatherBean>(){}.getType();
        weather = gson.fromJson(json,type);

        return weather;
    }
}