当前位置: 代码迷 >> 综合 >> 解析JSON类型APP开发
  详细解决方案

解析JSON类型APP开发

热度:47   发布时间:2023-10-15 00:39:35.0
??
一、以天气APP 为模型
1、创建数据库和表
在app/build.gradle文件中,添加一下内容   
dependencies{
compile 'org.litepal.android:core:1.4.1'
compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'com.google.code.gson:gson:2.7'
compile 'com.github.bumptech.glide:glide:3.7.0'   
}
2、根据需要创建实体类,用于存放需要解析的数据

public class City extends DataSupport {
private int id;
private String CityName;
private int cityCode;
private int provinceId;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getCityName() {
return CityName;
}

public void setCityName(String cityName) {
CityName = cityName;
}

public int getCityCode() {
return cityCode;
}

public void setCityCode(int cityCode) {
this.cityCode = cityCode;
}

public int getProvinceId() {
return provinceId;
}

public void setProvinceId(int provinceId) {
this.provinceId = provinceId;
}
}


3、创建Http请求工具类
public class HttpUtil {
public static void sendOkHttpRequest(String address, okhttp3.Callback callback) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(address).build();
client.newCall(request).enqueue(callback);
}
}

4、创建解析和处理JSON数据的工具类
public class Utility {
/**
* 解析和处理服务器返回的省级数据
*/
public static boolean handleProvinceResponse(String response) {
if (!TextUtils.isEmpty(response)) {
try {
JSONArray allProvinces = new JSONArray(response);
for (int i = 0; i < allProvinces.length(); i++) {
JSONObject provinceObject = allProvinces.getJSONObject(i);
Province province = new Province();
province.setProvinceName(provinceObject.getString("name"));
province.setProvinceCode(provinceObject.getInt("id"));
province.save();
}
return true;
} catch (JSONException e) {
e.printStackTrace();
}
}
return false;
}
……
}
5、设计UI界面

6、编写所获取数据的碎片整理工具类

7、在AndroidManifest中设置程序权限 INTERNET

8、解析GSON实体类


(1)GSON数据
"aqi":{
"city":{
"aqi":"44",
"pm25":"13"
}
}
解析实体类
public class AQI {
public AQICity city;
public class AQICity {
public String aqi;
public String pm25;
}
}

9、创建总实例类来汇总各个解析类

public class Weather {
public String status;
public Basic basic;
public AQI aqi;
public Now now;
public Suggestion suggestion;
@SerializedName("daily_forecast")
public List<Forecast> forecastList;

10、在Utility中添加解析JSON数据的方法

public static Weather handleWeatherResponse(String response){
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("HeWeather");
String weatherContent = jsonArray.getJSONObject(0).toString();
return new Gson().fromJson(weatherContent,Weather.class);
}catch (Exception e){
e.printStackTrace();
}
return null;
}

11、创建活动,使数据显示到界面上