2017-3-21
框架使人懶惰肠套,而我正想偷懶一下。
實現目標:用OkHttp獲取數據猖任,用fastjson解析數據
版權聲明:本文為博主原創(chuàng)文章你稚,轉載請說明出處。
[1]數據源
JSON元素中還有JSON數據
{
"scanNumber": "1",
"message": "success",
"user": {
"id": "082c9098",
"serial": "1478571500302eSxpLEBIR9k3HogJQWLI6znTS",
"createTime": "2016-11-27 16:37:27",
"updateTime": "2016-11-27 16:37:27",
"user_id": "f56c827f-027f-49e0-8b35-be3860915537",
"sex": null,
"constellation": null
}
}
[2]獲取數據
用OkHttp獲取數據(GET方法)
[1]拿到OkHttpClient
[2]構造Request
[3]將Request封裝為call
[4]執(zhí)行call
private boolean doGet(){
new Thread(new Runnable() {
@Override
public void run() {
try {
enqueue();
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
return false;
}
private void enqueue(){
//[1]拿到OkHttpClient
OkHttpClient client = new OkHttpClient();
//[2]構造Request
Request request = new Request.Builder()
.url("這里填請求的地址")
.build();
//[3]將Request封裝為call
Call call=client.newCall(request);
//[4]執(zhí)行call
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
L.i(LOGTAG,"onFailure"+e.getMessage());
e.printStackTrace();
}
@Override
public void onResponse(Response response) throws IOException {
res=response.body().string();
L.i(LOGTAG,"onResponse"+res);
//ToDo 接下來是解析數據
}
});
}
[3]根據數據源寫javaBean
[1]jsonObject里面包含一個userObject
[2]創(chuàng)建兩個Bean類
注意:Bean中的變量名必須和返回過來的JSON串里面的參數一樣,不一樣的變量名將不會有數據刁赖。多了或者少了不會有影響搁痛。
/**
*"scanNumber": "1",
"message": "success",
"user": {
"id": "082c9098-0326-4f18-8f5d-5e0494d9c6ab",
"serial": "1478571500302eSxpLEBIR9k3HogJQWLI6znTS",
"createTime": "2016-11-27 16:37:27",
"updateTime": "2016-11-27 16:37:27",
"user_id": "f56c827f-027f-49e0-8b35-be3860915537",
"sex": null,
"constellation": null
}
*/
public class ScanNumber {
private String scanNumber;
private String message;
private UserBean user;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getScanNumber() {
return scanNumber;
}
public void setScanNumber(String scanNumber) {
this.scanNumber = scanNumber;
}
public UserBean getUser() {
return user;
}
public void setUser(UserBean user) {
this.user = user;
}
}
/**
* "user": {
"id": "082c9098-0326-4f18-8f5d-5e0494d9c6ab",
"serial": "1478571500302eSxpLEBIR9k3HogJQWLI6znTS",
"createTime": "2016-11-27 16:37:27",
"updateTime": "2016-11-27 16:37:27",
"user_id": "f56c827f-027f-49e0-8b35-be3860915537",
"sex": null,
"constellation": null
}
*/
public class UserBean {
private String id;
private String serial;
private String createTime;
private String updateTime;
private String user_id;
private String sex;
private String constellation;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSerial() {
return serial;
}
public void setSerial(String serial) {
this.serial = serial;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getConstellation() {
return constellation;
}
public void setConstellation(String constellation) {
this.constellation = constellation;
}
}
[4]用fastjson解析數據
要想獲取到user的信息,需要先映射到大括號里的內容宇弛,之后再get
private void jsonParser(String jsonData) {
try{
//json數據解析成一個對象
ScanNumber scanNumber=JSON.parseObject(jsonData,ScanNumber.class);
UserBean userBean=JSON.parseObject(jsonData,ScanNumber.class).getUser();
String message = scanNumber.getMessage();
String user_id=userBean.getUser_id();
L.i(LOGTAG,"user_id"+user_id); //打印Log
L.i("message"," "+scanNumber.getMessage());
}catch(Exception e){
e.printStackTrace();
}
}
[5]保存數據
private void saveData(String data){
preferences = getSharedPreferences("count", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("user_id", user_id);
editor.apply();
L.i("保存結果", user_id);
}
大三的這個寒假壓力好大鸡典,但還是想說寒假快樂。