android: 用gson解析json字符串
一,安装第三方库gson
地址:
https://mvnrepository.com/artifact/com.google.code.gson/gson
build.gradle中dependencies添加:
implementation 'com.google.code.gson:gson:2.13.0'
然后点击 Sync Now
二,代码:
1,json代码:

2,数据类代码:
UserListEntity.java
package com.example.okdemo1.model;
import java.util.List;
public class UserListEntity {
private int code;
private String status;
private String time;
private String msg;
private Data data;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
public class Data {
private List<UserListItemEntity> list;
public List<UserListItemEntity> getList() {
return list;
}
public void setLabel(List<UserListItemEntity> list) {
this.list = list;
}
}
}
UserListItemEntity.java
package com.example.okdemo1.model;
public class UserListItemEntity {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3,解析代码:
package com.example.okdemo1;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.example.okdemo1.model.UserListEntity;
import com.example.okdemo1.model.UserListItemEntity;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.List;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
//给按钮增加点击事件
Button myButton = findViewById(R.id.apibutton);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 处理点击事件
doGetData();
}
});
}
//以get方式访问互联网上的页面,并返回数据
private void doGetData() {
Toast.makeText(MainActivity.this, "按钮被点击了!", Toast.LENGTH_LONG).show();
//1.创建HttpClient对象
OkHttpClient okHttpClient = new OkHttpClient();
//2.获取request对象
Request.Builder builder = new Request.Builder().url("http://www.test.net/json.php");
Request request = builder.build();
//3.异步请求发起
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
try {
String result = response.body().string();
//解析json到entity对象中
//如果需要更新主线程的 UI 如果使用 rxjava 以及 retrofit 就不用这样处理了
System.out.println("网络请求返回结果:");
System.out.println(result);
Gson gson = new Gson();
UserListEntity person = gson.fromJson(result, UserListEntity.class);
System.out.println("解析后status:");
System.out.println(person.getStatus());
System.out.println("解析后code:");
System.out.println(person.getCode());
List<UserListItemEntity> list = person.getData().getList();
//遍历list下的元素;
for (int i = 0; i < list.size(); i++) {
UserListItemEntity one = list.get(i);
System.out.println(one.getId());
System.out.println(one.getName());
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
}
}
三,测试效果:

浙公网安备 33010602011771号