1.首先在布局添加一个按键用来开始解析
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始解析" />
</LinearLayout>
2.对按键进行绑定与监听
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=findViewById(R.id.bt1);
button.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (view.getId()==R.id.bt1){
parse();
}
}
3.使用网络请求获取数据
private void parse() {
new Thread(new Runnable() {
@Override
public void run() {
try {
//1.创建一个OK HTTP client的实例
OkHttpClient client = new OkHttpClient();
Request builder = new Request.Builder()
.url("http://th.gisocn.com:10022/ZSBZ.WebClient/WCF/MobileServicePrimal.svc/GetUser?bindInfo=&password=c2Zz&appKey=12af7fdf-1e3e-4d79-a334-e38f7e211eb9&userId=%E6%9D%8E%E6%B5%A9%E6%B5%A9")//我们所需要解析的json
.build();
Response response = client.newCall(builder).execute();
String gsondata = response.body().string();//gsondata就是我们获取到的json
gsonparse(gsondata);//调用相应的解析方法
Log.i("TAG", "run: "+gsondata);
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
4.将获取到的数据打印出来查看内容
{"code":0,"message":null,"userid":null,"data":{"<BindInfo>k__BackingField":null,"<PersonId>k__BackingField":null,"curtoken":"6246102b-41a8-4223-ab70-bb69786586ff","department":"第四分局审批服务办公室","email":null,"imgurl":"~\/Img\/head.png","mobile":null,"shortname":"LHH","userid":"5937","username":"李浩浩","usertype":"普通用户"}}
5.根据内容创建对应的类,这里我们只对部分内容进行了解析
package com.example.demo_gson;
public class UserInfo {
private int code;
private String message;
private String userid;
private Data data;
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
public class Data{
private String department;
private int userid;
private String username;
private String usertype;
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public void setUsertype(String usertype) {
this.usertype = usertype;
}
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsertype() {
return usertype;
}
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
}
6.解析获取到的数据,将数据打印出来
//gson解析
private void gsonparse(String gsondata) {
Gson gson = new Gson();
UserInfo userInfo= gson.fromJson(gsondata, UserInfo.class);
Log.i("TAG", "userInfo.getData().getUsername(): "+userInfo.getData().getUsername());
Log.i("TAG", "userInfo.getData().getUsertype(): "+userInfo.getData().getUsertype());
Log.i("TAG", "userInfo.getData().getUserid(): "+userInfo.getData().getUserid());
}