Json数据解析
json对象:花括号开头和结尾,中间是键值对形式————”属性”:属性值””
json数组:中括号里放置 json 数组,里面是多个json对象或者数字等
JSONObject
利用 JSONObject 解析
1.创建 JSONObject 对象,传入满足 json 格式的字符串
2.根据 json数据的key键值 获取其中的数据,是什么类型的数据就写getxx()
3.getJSONObject("xxx") 获取JSONObject对象
4.getJSONArray("xxx") 获取json数组
5.jsonArray.getJSONObject(i) 获取数组中的第 i 个json对象
请求返回的数据如下:
JSONObject jsonObject = new JSONObject(data);
Log.i("okhttp-----成功","总共数量"+jsonObject.getString("total"));
// data 里面是 json 数组,数组里面放的是多个 json 对象
JSONArray jsonArray = jsonObject.getJSONArray("data");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jo = jsonArray.getJSONObject(i); // 获取数组中的第 i 个对象
String text1 = jo.getString("email");
Log.i("okhttp-----成功--邮箱","邮箱"+text1);
}
} catch (JSONException e) {
throw new RuntimeException(e);
}
Gson解析
用第三方工具来解析json数据
添加依赖
// 1.添加 gson 依赖
implementation("com.google.code.gson:gson:2.8.9")
创建 Bean 对象(数据对象),注意,元素和返回的数据的元素要一一对应。
- toJson:将 bean 对象转换成 json 字符串
- fromJson:将 json 字符串转换成 bean 对象
package com.example.androidstudiostudy.data;
import java.util.List;
// 一个json 的数据对象(来自于GET返回的 json 字符串)
public class OneJsonBean {
private int page;
private int per_page;
private int total;
private int total_pages;
private List<DataBean> data;
@Override
public String toString() {
return "OneJsonBean对象{" +
"page=" + page +
", per_page=" + per_page +
", total=" + total +
", total_pages=" + total_pages +
", data=" + data +
'}';
}
}
package com.example.androidstudiostudy.data;
// 此时的 DataBean 是 GET 返回的json字符串中 data的json对象
public class DataBean {
private int id;
private String email;
private String first_name;
private String last_name;
private String avatar;
public DataBean(int id, String email, String first_name, String last_name, String avatar) {
this.id = id;
this.email = email;
this.first_name = first_name;
this.last_name = last_name;
this.avatar = avatar;
}
public int getId() {
return id;
}
public String getEmail() {
return email;
}
public String getFirst_name() {
return first_name;
}
public String getLast_name() {
return last_name;
}
public String getAvatar() {
return avatar;
}
@Override
public String toString() {
return "DataBean{" +
"id=" + id +
", email='" + email + '\'' +
", first_name='" + first_name + '\'' +
", last_name='" + last_name + '\'' +
", avatar='" + avatar + '\'' +
'}';
}
}
Gson解析json数据
Gson gson = new Gson();
OneJsonBean oneJsonBean = gson.fromJson(data, OneJsonBean.class);
Log.e("okhttp-----成功--数据转换成对象",oneJsonBean.toString());