xUtils与FastJson获取和北京-赛车平台出租解析网络数据

发送一个北京-赛车平台出租异步任务就系Json数据

首先打开一个接口,里面是Json数据,通过xUtils框架来发送get请求,得到接口的Json字符串,将字符串用FastJson解析成一个实体类,保存在集合当中
在Gradle里面添加库工程

xUtils框架:compile ‘org.xutils:xutils:3.3.40’
FastJson:compile ‘com.alibaba:fastjson:1.1.56.android’
(我也不知道为什么显示出来的android是红色大写,应当是android)

实体类(VO类)的实现

首先我们要有一个可以打开的接口:
http://103.244.59.105:8014/paopaoserver/articles?params={“page”:1,”page_count”:10}
内容:
这里写图片描述
分析他的结构创建一个日常用品的Vo类,一般名字和id都是比较重要的

private String classify_name;
private int classify_id;

public int getClassify_id() {
    return classify_id;
}

public void setClassify_id(int classify_id) {
    this.classify_id = classify_id;
}

public String getClassify_name() {
    return classify_name;
}

public void setClassify_name(String classify_name) {
    this.classify_name = classify_name;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

Vo类的属性和Json数据里面的属性名字要一样,这样才能正确解析
有了一个Vo实体类之后我们就可以对Json进行映射
创建一个解析器

创建一个解析器,在整个工程里面可以都是用一个解析器进行数据解析

//创建一个解析器是实现ResponseParser 接口
public class JsonRespondParse implements ResponseParser {br/>@Override
public void checkResponse(UriRequest request) throws Throwable {

}

//重写解析Json数据的方法br/>@Override
public Object parse(Type resultType, Class<?> resultClass, String result) throws Throwable {
//判断整个数据是不是由一个List包裹起来的
if (resultClass == List.class) {
//将List解析成一个个小的对象(List的名字叫datas)
result = JSON.parseObject(result).getString("datas");
//解析成小的vo对象
return JSON.parseArray(result, (Class<?>) ParameterizedTypeUtil.getParameterizedType(resultType, List.class, 0));
} else { //如果不是用List组成的则直接将Json进行解析成vo实体类
return JSON.parseObject(result, resultClass);
}

}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

将解析器当成vo类的注解 

在Vo类的最上方添加 的注解
@HttpResponse(parser = JsonRespondParse.class)
这样Json数据可以直接映射成Vo对象,并将这个对象放到List集合当中
Vo类全部代码:

@HttpResponse(parser = JsonRespondParse.class)
public class DayGoodsVo {
private String classify_name;
private int classify_id;

public int getClassify_id() {
    return classify_id;
}

public void setClassify_id(int classify_id) {
    this.classify_id = classify_id;
}

public String getClassify_name() {
    return classify_name;
}

public void setClassify_name(String classify_name) {
    this.classify_name = classify_name;
}

@Override
public String toString() {
    return classify_name;
}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

得到Json数据

接下来就要得到Json数据了,只有拿到Json数据的字符串才能对它进行解析

这里要用到xUtils框架发送一个get请求来得到数据,xUtils框架的使用在这里就不进行介绍了
首先需要将接口拼接出来

//接口url
RequestParams requestParams = new RequestParams
("
http://103.244.59.105:8014/paopaoserver/articles");
//拼接接口(参数名,参数)
requestParams.addQueryStringParameter("params", "{\"page\":1,\"page_count\":10}");

1
2
3
4
5

1
2
3
4
5

这样完整的url就拼接好了
发送一个get请求,得到数据,并对数据进行解析

//用x.http().get发送一个get请求(url,得到返回数据并进行操作)
x.http().get(requestParams, new Callback.CacheCallback<List<DayGoodsVo>>() {br/>//得到返回数据会重写五个方法
@Override
public void onSuccess(List<DayGoodsVo> result) {
//返回成功时可以直接得到List集合
//如果是String.class得到的就是String字符串
for (DayGoodsVo dayGoods : result) {
Log.e("tag", dayGoods.toString());
mList.add(dayGoods);
}
//将解析的数据放到适配器中,在ListView中进行显示
mListView.setAdapter(new DayBaseAdapter(DayGoodsActivity.this, mList));
}

        @Override
        public void onError(Throwable ex, boolean isOnCallback) {

        }

        @Override
        public void onCancelled(CancelledException cex) {

        }

        @Override
        public void onFinished() {

        }

        @Override
        public boolean onCache(List<DayGoodsVo> result) {
            return false;
        }
    });

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

x.http()里面包含着子线程,所以不用再单独开启一个子线程去实现网路请求,而且数据显示在ListView中也直接在onSuccess()中实现
下面是完整的代码

private void getHttpData() {
RequestParams requestParams = new RequestParams
("
http://103.244.59.105:8014/paopaoserver/articles");
requestParams.addQueryStringParameter("params", "{\"page\":1,\"page_count\":10}");
x.http().get(requestParams, new Callback.CacheCallback<List<DayGoodsVo>>() {br/>@Override
public void onSuccess(List<DayGoodsVo> result) {
for (DayGoodsVo dayGoods : result) {
Log.e("tag", dayGoods.toString());
mList.add(dayGoods);
}
mListView.setAdapter(new DayBaseAdapter(DayGoodsActivity.this, mList));
}

        @Override
        public void onError(Throwable ex, boolean isOnCallback) {

        }

        @Override
        public void onCancelled(CancelledException cex) {

        }

        @Override
        public void onFinished() {

        }

        @Override
        public boolean onCache(List<DayGoodsVo> result) {
            return false;
        }
    });

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

这样就实现了通过一个异步任务,将Json数据直接解析成一个Vo实体类
发送一个同步任务

//同步线程中去访问网路,必须要在子线程中
public void httpGetSync() {
new Thread(new Runnable() {
br/>@Override
public void run() {
RequestParams requestParams = new RequestParams(urlJson);
//添加一个请求,获取信息
//键值对的形式来把请求参数进行一个封装
requestParams.addQueryStringParameter("sex", "girl");
try {
String result = x.http().getSync(requestParams, String.class);

                Log.d("TAG", "result:" + result);

            } catch (Throwable throwable) {
                throwable.printStackTrace();
            }
        }
    }).start();

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

这样的方法得到的是String字符串,也可以用上面直接解析到list中
上传文件

//上传文件
private void upload() {
//上传文件的网址
RequestParams requestParams = new RequestParams(fileUrl);
//模仿一个表单,模拟上传一个文件
//上传的是一个表单,而且可以上传文件
requestParams.setMultipart(true);
//上传文件(给文件定义一个名字file,head,上传的文件或者头像)
requestParams.addBodyParameter("file", new File(filePath));
//发送上传的请求,Get请求不能上传表单请求,要用Post请求
x.http().post(requestParams, new Callback.CommonCallback<String>() {
br/>@Override
public void onSuccess(String result) {
Log.d("TAG", "uoload success");

        }
        @Override
        public void onError(Throwable ex, boolean isOnCallback) {

        }

        @Override
        public void onCancelled(CancelledException cex) {

        }

        @Override
        public void onFinished() {

        }
    });

}

xUtils与FastJson获取和北京-赛车平台出租解析网络数据

原文地址:http://blog.51cto.com/13874207/2145706

时间: 2024-11-05 19:35:19

xUtils与FastJson获取和北京-赛车平台出租解析网络数据的相关文章

北京赛车平台出租度富文本编辑器UEditor的改造

在Java项目中,做内容管理功能时,需要用到富文本编辑器北京赛车平台出租(www.1159880099.com)QQ1159880099,目前流行的富文本编辑器还是比较多的,因为项目中用的是百度的UEditor,所以对UEditor使用中的一些问题做个总结吧. 因为是Java项目所以使用的是只能选择jsp版本的UEditor,使用方式还是比较简单的,按照UEditor官方的文档来就好了. 首先说下踩过的坑,我项目一开始是用的war部署的方式,大家都知道war部署时是会解压到tomcat的weba

java的UDP和TCP详解和北京-赛车平台出租源码分析

1.需求分析北京-赛车平台出租Q1446595067 最近在和硬件做网口的传输协议,一开始告诉我说用TCP的socket进行传输,我说没问题,就写了个socket的发送和接收方法.but过了没一段时间,又告诉我用udp吧,udp传的比较快,就也写了一个udp的.无论是socket还是udp,感觉网上有很多都是写一个监听端口,监听往这个端口发送的数据,然后再写一个发送方法. 2.问题难点本来硬件要是往java端指定端口发,就完全没问题了,但是它是把我发送的数据按照我发的端口号原路返回,就想http

深入快三平台北京赛车平台出租/搭建浅出学Vue开发

Vue对移动端和浏览器版本的支持 因为Vue本身使用快三平台北京赛车平台出租/搭建Q1619668668浅了ECMAScript 5 特性,所以Vue支持所有兼容ECMAScript 5 的浏览器.我们根据下面的图示来解释一下, 红色表示为几乎不支持 黄色表示为大部分支持 (有很小的可能会影响使用) 绿色表示为几乎全部支持(不影响使用) 由上面的图示可以看出来对IE来说,在IE8及其以下的时候,是不支持ECMAScript 5 的,也就是说,是无法使用Vue的.我们看一下对IE8的描述. IE8

北京赛车平台定制开发分布式之redis复习精讲

1.为什么使用redis 北京赛车平台定制开发[大神源码论坛]dsluntan.com [布丁源码论坛]budingbbs.com 企娥3393756370 分析:博主觉得在项目中使用redis,主要是从两个角度去考虑:性能和并发.当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis.因此,这个问题主要从性能和并发两个角度去答.回答:如下所示,分为两点(一)性能如下图所示,我们在碰到需要执行

js数据类型OA北京转赛车平台出租换及常用方法、内置对象

Date 对象OA北京转赛车平台出租haozbbs.comQ1446595067 Date 对象用于处理日期和时间.创建 Date 对象的语法: var myDate=new Date() 注释:Date 对象会自动把当前日期和时间保存为其初始值.Date 对象方法 Date() 返回当日的日期和时间. setFullYear() 设置 Date 对象中的年份(四位数字). getMonth() 从 Date 对象返回月份(0 ~ 11). getDate() 从 Date 对象返回一个月中的某

北京_赛车平台出租和视频播放View的扩展

北京_赛车平台出租 VideoView 是android 系统提供的一个媒体播放显示和控制的控件.其结构层次如下: 原型:VideoView extends SurfaceView implements MediaController.MediaPlayerControl 类结构: java.lang.Object ? android.view.View ? android.view.SurfaceView ? android.widget.VideoView 通过VideoView 的原型可知

只有程序员北京赛车平台一条龙服务才懂这些黑色幽默!

也是北京赛车平台一条龙服务[大神源码论坛]dsluntan.com [布丁源码论坛]budingbbs.com 企娥3393756370机缘巧合,让我一个之前工作从未接触过程序员的人,现在成天和程序员打交道,要知道,不懂技术,往往他们想和你幽默的搞笑一下,未必能读懂. 都说程序员情商低,不爱说话,比较闷骚.可是,只要你深入的接触下来,会发现这是一群非常可爱的人.他们聪明伶俐.乐于助人.喜欢钻研技术.逻辑性强等等,很多闪光点让我对程序员的印象有了惊人的逆转. 尤其是一些互联网大公司,例如:阿里.京

Linux上北京-赛车平台搭建分布式集群

1.下载北京-赛车平台源码搭建 2.通过Xftp将文件传到Linux服务器上 3.使用 命令 tar --zxvf zookeeper-3.4.12 解压 zookeeper 4.配置系统环境变量 vim /etc/profile 执行source /etc/profile 使环境变量立即生效5.进入conf中 复制 zoo_sample.cfg 文件的并命名为为 zoo.cfg 6.同过 vim zoo.cfg 编辑配置文件 编辑前 编辑后 server.A=B:C:D中的A是一个数字,表示这

Android recycleView 的一北京PK10平台出租些优化与相关问题

北京PK10平台出租论坛:haozbbs.com Q1446595067 recycleView 也出来很长时间了,记录一些自己见到的recycleView优化吧. 1.recyclerView.setHasFixedSize(true); Item的高度是固定的,设置这个选项可以提高性能.总得来说就是就是避免整个布局绘制.就是避免requestLayout. 具体的可以看看stackoverflow的这个几个问题 Understanding RecyclerView setHasFixedSi