Android请求网络并解析json
时间: 2023-08-05 20:18:26 浏览: 133
在 Android 中,请求网络并解析 JSON 数据可以使用常见的网络请求库和 JSON 解析库。以下是使用 OkHttp 和 Gson 进行网络请求和 JSON 解析的示例代码。
1. 添加依赖
在 build.gradle 文件中添加以下依赖:
```
dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
implementation 'com.google.code.gson:gson:2.8.6'
}
```
2. 发起网络请求
使用 OkHttp 发起 GET 请求,并将返回的 JSON 数据作为字符串返回。
```
public static String doGetRequest(String url) throws IOException {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
```
3. 解析 JSON 数据
使用 Gson 解析 JSON 数据,并将其转换为 Java 对象。
例如,假设我们有一个包含人名和年龄的 JSON 数据:
```
{
"people": [
{
"name": "Tom",
"age": 25
},
{
"name": "Bob",
"age": 30
},
{
"name": "Alice",
"age": 27
}
]
}
```
我们可以定义一个 Person 类来表示每个人,并使用 Gson 将 JSON 数据转换为 Person 类的 List。
```
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public static List<Person> parseJson(String json) {
Gson gson = new Gson();
Type type = new TypeToken<List<Person>>(){}.getType();
return gson.fromJson(json, type);
}
```
4. 使用示例
在 Activity 或 Fragment 中使用以上代码进行网络请求和 JSON 解析。
```
new Thread(() -> {
try {
String json = doGetRequest(url);
List<Person> people = parseJson(json);
// 在 UI 线程中更新 UI
runOnUiThread(() -> {
// 处理返回的数据
});
} catch (IOException e) {
e.printStackTrace();
}
}).start();
```
其中,url 是请求的地址,可以是任何支持 GET 请求的 API。在 Android 开发中,为了避免在主线程中执行耗时操作,建议将网络请求放在子线程中执行。在使用返回的数据更新 UI 时,需要使用 runOnUiThread 方法切换到主线程。
阅读全文