android获取远程json数据库,Android#07--用OkHttp获取数据,用fastjson解析数据

2c49e3d45539?appinstall=0

2017-3-21

框架使人懒惰,而我正想偷懒一下。

实现目标:用OkHttp获取数据,用fastjson解析数据

版权声明:本文为博主原创文章,转载请说明出处。

[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]执行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]执行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]创建两个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);

}

大三的这个寒假压力好大,但还是想说寒假快乐。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值