26.27网络编程、网络通信2

AsyncTask
●为了方便子线程中对UI进行操作,Android提供了一些好用的工具类,AsyncTask就是其中之一-。借助AsyncTask, 可以十分简单地从子线程切换到主线程,它的原理也是基于异步消息处理机制的。
●AsyncTask是- 个抽象类,它有三个泛型参数,分别如下所示
●Params; 执行异步任务时需要传入的参数,用于后台任务中使用
●Progress: 后台任务执行时,如果需要在界面上显示当前的进度,则使用该参数作为进度单位
●Result: 当任务执行完毕后,如果需要对结果进行返回时,则使用该参数作为返回值类型

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
●客户端(浏览器端)与服务器端交互: xml ison
●本质 就是具有特定格式的字符串
●JSON数据 已经是客户端与服务器端交互的最常用的选择,已经很少使用xml来进行数据交互了

JSON数据格式

整体结构:
String json1 = “{“id” : 12,“name”: “Tom”]”;
String json2 = “[{“id”: 12,“name”:“Tom”}, {“id”: 12,“name”: “Tom”}]";

Json数组:[] ArrayList
Json对象:{} HashMap

Json数组的结构: [value1, value2, value3]
Json对象的结构: {key1:value1, key2:value2, key3:value3}
key的数据类型:字符串

●value的数据类型:
数值(包含整数和小数)
字符串
null
json数组[]
String isonArr = “[value1,value2,value3,value4]”; “[1,2,3]”
json对象{}
String jsonObject = “{key1:value1,key2:value2,key3:value3}”;

●例子:
[1,“ab",[], {“n”:123,“b":“abc”}] [1, “a":3]
{“nam"TOM”, “age”:12} {“a”,“a”, [3]}

解析技术:
●Android原生API :编程相对麻烦
●Gson框架:编码简洁,项目首选
解析方向:
●服务器端:将java对象(包含集合)转换为json格式字符串
●客户端:将json格式字符串转换为java对象(包含集合)

在这里插入图片描述
相关API
Android原生API:
●IsonObiect类:json对象{}
●JSONObject(String json) :将ison字符串解析为json对象
●Xxx getxxx(String name) :根据name,在json对象中得到对应的Value
●JsonArray类: json数组 []
●JSONArrayString json) :将ison字符串解析为json数组
int length() :得到json数组中元素的个数
●Xxgetxx(intindex):根据下标得到json数组中对应的元素数据

JSONobject json=new JSoNObject(str);
String obj=json. getstring("weatherinfo"); 
JsoNobject json2=new JsoNobject(obi) ;
System. out . printIn(json2. getstring("city"));

Gson框架API
●Gson: 能解析json数据的类
●Gson() :构造对象的方法
●String tolson(Object src) :将对象转换为对应格式的json字符串
●T fromJson(String json, Type typeOfT) :解析Json字符串,得到对象
●TypeToken :用来得到Type的类
●protected TypeToken() :受保存的构造方法
●Type getType():得到类型对象

引入类库到工程

Gson gson=new Gson() ;
weatherinfo w= gson . fromJson(str ,Weather info.class);
//类型
//对象数组.
//List<weatherinfo> list = gson.fromlson(str ,new TypeToken<List<weatherinfo>>(){}.getType());

●测试解析{}
//单个json

{
"id":2, "name":"大虾",
"price":12.3,
"imagePath":"http://192.168.10.165:8080/LO5_ Server/images/f1.jpg"
}

●测试解析[]
//数组json

[
{
"id":1, "name'":"大虾1",
"price":12.3,
"imagePath":"http://192.168.10.165:8080/f1jpg"
},
{
"id":2, "name":"大虾2",
"price":12.5,
"imagePath":"http://192.168.10.165:8080/f2.jpg" .
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值